Choćby w komentarzach przy wpisie (poradniku) dotyczącym przygotowania i konfiguracji serwera WWW pojawiają się w komentarzach propozycje, by Apache zastąpić np. Lighttpd czy Nginx.

Jest to argumentowane mniejszym zużyciem pamięci RAM, mniejszym obciążeniem procesora czyli ogólnie wydajnością. Za Apachem przemawia popularność – a tym samym ilość poradników, chyba prostsza konfiguracja i możliwości – w tym choćby ilość „modów” (pluginów).

Sprawa nie jest też taka oczywista jeśli chodzi o wydajność – niekoniecznie zmiana Apache2 np. na Nginx przyniesie ze sobą zwiększenie wydajności – czasem jest wręcz odwrotnie.

Ale najpierw trzeba to jakoś sprawdzić/przetestować, i tu doskonale sprawdzi się narzędzie wchodzące w skład Apache – nie tylko do testów serwerów na tym środowisku.

ab – Apache HTTP server benchmarking tool

Jest to prosty program wchodzący w skład serwera Apache2, a konkretnie w skład paczki „apache2-utils”.

Jeśli na serwerze nie mamy, to np. w systemie Debian możemy szybko doinstalować:

sudo apt-get install apache2-utils

Testujemy serwer – testujemy stronę

Przykładowe polecenie dla przetestowania strony „jakaś-strona-www.pl” będzie wyglądało tak:

ab -n 1000 -c 50 http://jakaś-strona-www.pl/

Gdzie:

  • n – ilość „pobrań strony” (symuluje przeglądarkę)
  • c – jednoczesna ilość żądań (domyślnie 1, ilość „użytkowników” w jednej chwili)

W tym przypadku jest to 20 paczek po 50 „odwiedzających” za każdym razem (20×50=1000, 100/50=20).

Obie wartości zazwyczaj trzeba dobrać indywidualnie do konkretnego testu – inaczej się testuje np. stronę na jakimś CMSie (np. WordPress) gdzie każdorazowe odpytanie serwera generuje więcej „roboty” dla niego, niż ma to miejsce w przypadku statycznej strony (zwykły HTML) – tak by test trwał dłużej niż ułamek sekundy…

Przykładowy wynik testu:

Warto jeszcze wspomnieć o parametrze „-k”, który aktywuje dla testu opcję „KeepAlive”, czyli podtrzymywanie sesji dla połączeń z serwerem.

Jeśli chcemy zmierzyć wydajność skryptu – dodajemy taką opcję, dzięki czemu odpadnie czas potrzebny na każdorazowe „zestawiania połączenia” z serwerem:

ab -n 1000 -c 100 -k http://jakaś-strona-www.pl/

Jeśli zamierzamy przeanalizować zarówno pracę skryptu (strony) jak i całego serwera, wraz z łączem do niego – nie korzystamy z tej opcji.

Więcej informacji znajdziecie na stronie projektu, jak i w Wikipedii.

(!) Zgłoś błąd na stronie