tom000 - Personal Website - Strona główna
decor1 Serwer HTTP decor2

Wydajność poszczególnych operacji serwera

    Przed porównaniem utworzonego serwera HTTP z istniejącymi już serwerami, warto jeszcze raz sprawdzić, jak wygląda wykonywanie poszczególnych operacji przez serwer i ile czasu on potrzebuje na przetworzenie całego zapytania.

Rys. 5.1 Wykres przedstawiający czas wykonywania poszczególnych operacji

Rys. 5.1 Wykres przedstawiający czas wykonywania poszczególnych operacji

    Na rysunku 5.1 można zaobserwować przebieg jednego połączenia klient – serwer, ze szczegółowym podziałem na poszczególne operacje. W czasie tego połączenia przetwarzane są dwa zapytania. Poziome linie prezentują czas wykonywania danej operacji, natomiast krzyżykami zaznaczone są operacje, które są wykonywane.

    Na wykresie nie widać dokładnie, kiedy wątek obsługujący dane połączenie został utworzony (mógł zostać utworzony przy starcie serwera), natomiast widać kiedy danemu wątkowi przydzielono obsługę połączenia (StartReadingClientRequests). Kolejnym krokiem jest tworzenie obiektu zapytania (CreatingRequest), podczas którego od razu są odczytywane nagłówki zapytania (kończące się na RequestHeaderOver). Dalej widać drobne opóźnienie pomiędzy końcem odczytywania nagłówków zapytania, a tworzeniem dla niego obiektu odpowiedzi. Sprawdzane jest tam, czy zapytanie nie zawiera jakiegoś ciała – w tym przypadku nie zawiera. Kolejnym krokiem jest utworzenie obiektu zawierającego zasób, o który zostało wysłane zapytanie (CreateResponseEntity). Jak widać na wykresie jest to najdłuższa z wszystkich operacja (trwająca około 80 milisekund). W tym czasie sprawdzane jest, czy zasób istnieje i następuje jego pobranie z pliku, lub z zewnętrznej aplikacji przez CGI. Następnie gotowa odpowiedź wysyłana jest do klienta i ze strumienia TCP odczytywane jest kolejne zapytanie, które przetwarzane jest w ten sam sposób. Zauważyć tu można pewną właściwość Javy – serwer podczas działania przetwarza kolejne operacje coraz szybciej. Widać to również na rysunku 5.2 prezentującym ten sam moment czasowy z udziałem 3 wątków (c1, c2, c3).

Rys. 5.2 Wykres przedstawiający czas wykonywania operacji dla 3 wątków

Rys. 5.2 Wykres przedstawiający czas wykonywania operacji dla 3 wątków

← Aplikacja testująca Serwer HTTP Porównywane serwery HTTP →
Copyleft (C) tom000.info 2004-2012. Some rights reserved.