Własne WWW

Słowo "serwer" brzmi dla ciebie niezrozumiale i niepokojąco? Spokojnie, to nie musi być stojąca gdzieś w kącie skrzynka, do której obsługi potrzebna jest specjalistyczna wiedza. Może to być prywatny komputer - potrzebny jest tylko jeden dodatkowy program, właśnie serwer WWW

Słowo "serwer" brzmi dla ciebie niezrozumiale i niepokojąco? Spokojnie, to nie musi być stojąca gdzieś w kącie skrzynka, do której obsługi potrzebna jest specjalistyczna wiedza. Może to być prywatny komputer - potrzebny jest tylko jeden dodatkowy program, właśnie serwer WWW

Kiedy przestaniesz się ekscytować "magią" języka HTML i sam przygotujesz stronę WWW ze zdjęciami z wakacji, prędzej czy później podczas umieszczania na serwerze kolejnych zdjęć ujrzysz komunikat "No space left". Pojawi się wtedy dylemat: co skasować? A może uniezależnić się od czyjejś łaski i zorganizować sobie dużo więcej niż przydzielone marne 10 MB?

Jeśli zdecydujesz się zapytać o dobór serwera WWW na dowolnym forum, możesz być pewny, że wywołasz wojnę. Zwolennicy Windows poradzą uruchomienie dostarczanych wraz z systemem operacyjnym serwerów PWS (Personal Web Server) czy IIS, których poprawna konfiguracja zwykle ogranicza się do włożenia płyty instalacyjnej i kilku kliknięć. Sympatycy Linuksa natychmiast zakrzyczą poprzedników, że jedynym słusznym serwerem jest Apache, a najlepiej Apache z MySQL i PHP (AMP) Może ktoś nieśmiało zaproponuje Sambar Server, ale też go zakrzyczą.

Co to znaczy "lepszy"?

Statystyki prowadzone przez serwis Netcraft wykazują wyższość Apache.

Statystyki prowadzone przez serwis Netcraft wykazują wyższość Apache.

Stajesz przed starym jak świat dylematem, który poróżnił zwolenników Windows i Linuksa: nie wiesz, co oznacza "lepszy". Czy serwer ma być szybki, wydajny i niezawodny? Czy może raczej - bezpieczny? A może łatwy w obsłudze? Niestety, jak to w życiu, wszystkiego mieć nie można.

Kiedy za kryterium "bycia lepszym" przyjmiesz popularność i przyjrzysz się wynikom badań prowadzonych przez serwis Netcraft (www.netcraft.com), może zaczniesz się przekonywać do serwera Apache. Zaraz jednak natrafisz na serwisy wykazujące, że Netcraft się myli i popularniejszym serwerem jest IIS.

Jeśli natomiast o "lepszości" miałby decydować wyższy poziom bezpieczeństwa, zwolennicy Microsoftu zaczną cię przekonywać, że w roku 2004 w IIS po raz pierwszy zanotowano mniej krytycznych błędów niż w Apache. Zaraz jednak znajdziesz komentarz mówiący, że ilość nie zawsze przechodzi w jakość i że choć w IIS wykryto mniej krytycznych błędów, to jednak pod koniec 2004 roku ciągle więcej pozostawało bez poprawek.

Zrezygnowany zwrócisz się ku ostatniemu z głównych kryteriów: szybkości działania. I tutaj czeka albo kolejne rozczarowanie, albo zupełny zamęt w głowie: co strona, to inny wynik. Nawet jeśli znajdziesz coś, co nie zostało skompletowane dwa czy pięć lat temu, pojawi się masa niedopowiedzianych kwestii: liczba modułów uruchomionych w serwerze, wpływ innego oprogramowania (antywirusowego? firewalla?) na szybkość pracy, zawartość pliku konfiguracyjnego, optymalizacja w trakcie kompilacji itp., itd.

W związku z tym praktycznie wszystkie porównania będą dla ciebie bezużyteczne, bo czym innym jest sterylne środowisko testowe, a czym innym zwykłe miejsce pracy, gdy serwer WWW musi czasem posłużyć jako komputer do gier albo miejsce do tymczasowego składowania plików. Po tych wszystkich przygodach - jeśli tylko nie przekabacili cię jedni lub drudzy krzykacze - okaże się prawdopodobnie, że choć dowiedziałeś się niejednego, wróciłeś do punktu wyjścia i ciągle nie potrafisz wybrać najlepiej dostosowanego do twoich potrzeb oprogramowania. Popełniłeś bowiem błąd: nie zdefiniowałeś na początku swoich potrzeb. Dlatego przed dalszą lekturą usiądź na chwilę i zastanów się, co naprawdę cię interesuje. Pomoże ci w tym poniższe zestawienie, w którym każdy wariant zawiera możliwości wariantów wcześniejszych i oznacza bardziej dynamiczną (tj. umożliwiającą większa interaktywność), wymagającą większego nakładu pracy oraz trudniejszą w zabezpieczeniu, stronę. Czy zatem interesuje cię:

1. Kolorowa, atrakcyjna strona WWW, na której zechcesz zamieścić swoje dzieła (wiersze, zdjęcia, animacje itp.) połączone odsyłaczami w logiczną całość?

2. Kolorowa atrakcyjna strona WWW, na której twoje dzieła będą połączone nie tylko odsyłaczami, lecz także - z racji ilości - dadzą się wyszukiwać według ściśle określonych kryteriów?

3. Kolorowa, atrakcyjna strona WWW, która będzie tak obszerna, że bez wyszukiwarki nie da się obejść. Czy strona ta po pewnym czasie będzie stanowić wstęp do poważniejszej, biznesowej działalności?

4. Atrakcyjna strona WWW, która zostanie uruchomiona na dedykowanym sprzęcie i ma działać niezależnie od obciążenia?

Każdy wariant odpowiada innemu, ściśle określonemu zapotrzebowaniu: pierwszy będzie charakterystyczny dla usługi podstawowej (użytkownicy domowi), drugi dla usługi średniozaawansowanej (użytkownicy domowi, ale z ambicjami na coś większego), trzeci dla usługi zaawansowanej (użytkownicy domowi lub małe firmy) i wreszcie czwarty dla portalu korporacyjnego (małe i większe firmy).

Zanim jednak sprecyzuję, czym różnią się powyższe warianty, spróbuję objaśnić jeszcze, w jaki sposób przeprowadziłem testy.

Apache 1 czy Apache 2?

Apache 1 jest starszy, z niego wywodzi się linia Apache 2. Rozwijał się wraz z systemami uniksowymi, uważany jest jednak za wolniejszy. Apache 2 przepisano praktycznie od zera, aby mógł wykorzystywać wielowątkowość oraz lepiej gospodarować zasobami nowoczesnych systemów operacyjnych (Windows NT/2k/XP, nowe systemy uniksowe). W środowiskach produkcyjnych zaleca się stosowanie Apache 1.

Metodologia

"Proxy" i "Load-balancer" mogą skutecznie odciążyć serwery WWW.

"Proxy" i "Load-balancer" mogą skutecznie odciążyć serwery WWW.

Kiedy dokonałem już wyboru programów testujących (patrz Ramka "Programy testujące"), stanąłem przed poważnym dylematem: na jakie systemy operacyjne się zdecydować? Nie zależało mi na maksymalnym skomplikowaniu testu czy wymyślaniu dodatkowych założeń (np. skoki obciążenia w godzinach 11-12 czy obciążenia dodatkowe wywołane atakami wirusów itd.), których i tak nie sposób przewidzieć. Zupełnie nie interesowała mnie także możliwość przekompilowania źródeł, gdyż początkujący użytkownik prawdopodobnie sobie z nią nie poradzi.

Ważniejsze było znalezienie ściśle określonych grup docelowych. Okazało się, że najbardziej pomogły mi nie wyszukane testy i opisy zaawansowanych technologii, a spisane powyżej proste pytania, kładące nacisk na to, co potencjalnego właściciela serwera WWW może interesować: łatwość instalacji, nieskomplikowana konfiguracja, brak zmniejszających niebezpieczeństwo "haczyków" w domyślnej instalacji itd.

Pamiętajmy, że uruchomienie serwera WWW z udostępnionymi pewnymi zasobami automatycznie włącza cię do jednej z grup i wyłącza z grup pozostałych - dlatego opisywane na dalszych stronach benchmarki nie powinny być bezpośrednio porównywane. Jako właściciel prostszej strony, zechcesz może przede wszystkim obniżyć koszty, jako nieco bardziej zaawansowany użytkownik zainteresujesz się bezpieczeństwem i stabilnością oferowanych rozwiązań.

Aby pomóc w decyzji użytkownikom z grupy pierwszej i drugiej, przeprowadziłem testy, które dawały odpowiedź, czy uruchomiony serwer WWW będzie w stanie pracować w sposób niezauważalny i nie obciąży zanadto komputera użytkownika. Z takiego podejścia zrezygnowałem zupełnie w grupie trzeciej, gdzie jest tyle możliwych kombinacji, optymalizacji i zastosowań, że postanowiłem zainstalować niezbędne rozszerzenia i zbadać stabilność podczas siedmiu dni nieprzerwanego działania.

Programy testujące

JMeter

Jest bardzo zaawansowanym - i przez to niezupełnie intuicyjnym w obsłudze - programem testującym wydajność WWW . Możliwościami przewyższa wszystkie inne programy razem wzięte. Prosty przykład: potrafi nie tylko przeprowadzić test sprawności procesora czy wydajności łącza (czytaj: maksymalnie obciążyć serwer WWW przez ściąganie pewnej liczby plików), lecz także symulować dużo bardziej realne sytuacje. Można go "przyuczyć" do logowania się na serwer, zamieszczania komentarzy, szperania po stronach w danych odstępach czasu itd. JMeter został w całości napisany w Javie, dlatego można go uruchomić w każdym systemie operacyjnym, do którego jest wirtualna maszyna Javy (Windows, Solaris, Linux, przy odrobinie samozaparcia również w FreeBSD i inne). W związku z tym testy w trzeciej kategorii przeprowadziliśmy zupełnie inaczej, tj. JMeter był uruchamiany na oddzielnej, połączonej z naszym serwerem WWW przez szybkie łącze o przepustowości 100 megabitów (domowa sieć LAN) maszynie. Powód decyzji był oczywisty: program generował tak duży ruch, że zabierał serwerowi WWW czas procesora i w związku z tym sam sobie fałszował wyniki. Natomiast w dwóch pierwszych kategoriach obciążenie było niewielkie i mieściło się w granicach błędu pomiarowego.

WAPT

Drugi z bardzo przydatnych programów testujących: próby przeprowadzane równolegle WAPT-em i Jmeterem wykazały, że ten pierwszy doskonale daje sobie radę w środowiskach testowych i daje godne zaufania wyniki. Dlatego zdecydowałem się całkowicie mu zawierzyć w dwóch pierwszych konfiguracjach testowych.


Zobacz również