KLone kontra Boa, Lighttpd i Apache

Spis treści

 

 

 

Środowiska porównania:

Serwer

  • Intel Xeon 3060, 2.40 GHz
  • Debian Etch Linux 2.6.18-4-686 #1 SMP
  • Apache 2.2.8
  • Boa 0.94.B
  • KLone 2.0.3
  • Lighttpd 1.4.19

Klient

  • MacBookPro 2.2 GHz Intel Core 2 Duo
  • Darwin Kernel Version 9.2.2
  • Apache Bench Version 2.0.4.0-dev

 

1. Dostęp do statycznej strony w systemie pliku

Test polega na pomiarze wydajności serwera, podczas wystawienia go ma działanie dużej liczby jednoczesnych żądań klientów.

Zostały użyte poniższe parametry:

  • 1000 żądań HTTP ze współbieżnością 1:1
  • 1,5 KB statyczna strona pobierana z systemu pliku

 

a) Czas połączenia

czas potrzebny klientowi na połączenie się z serwerem

 

 

Tak jak liczba jednoczesnych żądań zwiększa się do 1000, czas połączenia klientów KLone oscyluje pomiędzy 5 a 15 ms. Średnio jest to ok. 25 ms mniej niż Boa i 30 ms mniej niż Lighttpd. Wydaje się, że Apache2 cierpi na ok. 1 s nieregularne szczyty.

 

b) Czas obsługi

czas potrzebny do obsługi żądania klienta i odpowiedzi zwrotnej z serwera

 

 

Podczas obsługi żądania czas stale rośnie i stabilizuje się na ok. 280 ms dla Lighttpd i sekundy zarówno dla Boa i Apache2, dla KLone czas nigdy nie przekracza 30 ms.

 

c) Łączny czas

łączny czas na obsługę klienta

 

 

Całkowity czas obsługi zmienia się proporcjonalnie do czasu obsługi żądania od czasu połączenia stabilizuje się do wartości stałej, a tym samym pokazuje podobne wyniki.

 

2. Ściągnięcie dużego pliku

Ten test mierzy wydajność serwerów podczas jednoczesnego ściągania dużego pliku przez klientów.

Zostały użyte poniższe parametry:

  • 100 żądań HTTP ze współbieżnością 1:1
  • 10 MB statycznej strony otrzymywanej z systemu pliku

 

a) Czas połączenia

czas potrzebny klientowi na połączenie się z serwerem

 

 

Czas połączenia jest średnio podobny dla wszystkich czterech serwerów, stabilizując się na poziomie 2 ms dla 100 jednoczesnych ściągnięć. Jednakże Klone pokazuje w czasie większą stabilizację (mniejsze oscylacje).

 

b) Czas obsługi

czas potrzebny do obsługi żądania klienta i odpowiedzi zwrotnej z serwera

 

 

Czas obsługi żądania rośnie liniowo dla wszystkich czterech testów, z wyjątkiem testu 4. Wzrost gradientu liniowego jest mniejszy dla Klone w porównaniu z innymi serwerami, i który sprawdza się zwłaszcza dla małej liczby żądań (Boa, Lighttpd, Apache2 osiągają czas obsługi odpowiednio 48 s, 45 s i 10 s) o wiele szybciej niż Klone, który utrzymuje wzrost liniowy.

 

c) Łączny czas

łączny czas na obsługę klienta

 

 

Całkowity czas obsługi zmienia się propocjonalnie do czasu obsługi od czasu stabilnego połączenia do wartości stałej, a tym samym pokazuje podobne wyniki.

 

3. Perl CGI

Ten test mierzy wydajność serwerów www podczas wykonywania dużej liczby żądań skryptów CGI.

 

Zostały użyte poniższe parametry:

  • 1000 żądań HTTP ze współbieżnością 1:1
  • wykonywanie prostego skryptu CGI (test-cgi dostarczony z Apache2)

 

a) Czas połączenia

czas potrzebny klientowi na połączenie się z serwerem

 

 

Jak liczba jednoczesnych żądań zwiększa się do 1000, czas połączenia klientów Klone pozostaje na stałym poziomie 1-2 ms. To jest ok. 30 ms mniej niż Boa i Lighttpd. Apache2 cierpi z powodu 1 s nieregularnych szczytów.

 

b) Czas obsługi

czas potrzebny do obsługi żądania klienta i odpowiedzi zwrotnej z serwera

 

 

Klone jest poza wydajnością wykonywaną przez Boa dla mniej niż 800 jednoczesnych żądań, ale pokazuje lepsze rezultaty od Lighttpd (przez więcej niż 200 ms na żądanie) i Apache2, który cierpi z powodu gwałtownego czasu żądania obsługi, gdy tylko liczba żądań zwiększa się do 1000.

 

c) Łączny czas

łączny czas na obsługę klienta

 

 

Całkowity czas obsługi zmienia się proporcjonalnie do czasu obsługi żądania od stabilnego czasu połączenia do wartości stałej, a tym samym pokazuje podobne wyniki.

 

4. PHP kontra strony KL1

Ten test porównuje wydajność wykonywanego kodu PHP przez Klone i innych serwerów www. Także porównanie jest stworzone pomiędzy wykonywaniem poniższego prostego kodu PHP i skryptów KL1, zawierające te same funkcjonalności.

 

Testowy skrypt PHP:

 

Aktywna strona KL1:

 

a) Czas połączenia

czas potrzebny klientowi na połączenie się z serwerem

 

 

Klone nie jest zoptymalizowany dla PHP w standardzie CGI. Chociaż czas połączenia dla innych serwerów jest stałe i wynosi ok. 50 ms, to dla Klone wydajność rozpada się liniowo. Jednakże, jeżeli zamiast PHP zostanie użyty skrypt KL1 to Klone wykonuje skrypt ponad dwukrotnie szybciej w porównaniu z Lighttpd.

 

b) Czas obsługi

czas potrzebny do obsługi żądania klienta i odpowiedzi zwrotnej z serwera

 

 

Obsługa żądań PHP przez Klone jest bardzo efektywne niż przez Boa, ale mniej wydajne od Lighttpd. Również przedstawiono słabsze wyniki w porównaniu do Apache2. Jednak ostateczne wyniki pokazują pełny potencjał Klone: jeżeli kod KL1 jest używany zamiast PHP, czas obsługi pozostaje na stałym poziomie ok. 25 ms, natomiast Lighttpd cierpi z powodu wzrostu liniowego.

 

c) Łączny czas

łączny czas na obsługę klienta

 

 

Wyniki są podobne do wcześniejszych pomiarów: Klone jest pozbawiony zoptymalizowanego wykonywania PHP, co skutkuje bardzo niską wydajnością. Jednak przez użycie wbudowanego kodu C na dynamicznych stronach można uzyskać optymalne wyniki.