Aby wykonać test obciążenia, dla własnej ciekawości, na moim serwerze uruchomiłem:
ab -kc 50 -t 200 http://localhost/index.php
To otwiera 50 utrzymywanych połączeń na 200 sekund i po prostu uderza mój serwer prośbami o index.php
W moich wynikach otrzymuję:
Concurrency Level: 50
Time taken for tests: 200.007 seconds
Complete requests: 33106
Failed requests: 32951
(Connect: 0, Receive: 0, Length: 32951, Exceptions: 0)
Write errors: 0
Keep-Alive requests: 0
Total transferred: 1948268960 bytes
HTML transferred: 1938001392 bytes
Requests per second: 165.52 [#/sec] (mean)
Time per request: 302.071 [ms] (mean)
Time per request: 6.041 [ms] (mean, across all concurrent requests)
Transfer rate: 9512.69 [Kbytes/sec] received
Zwróć uwagę na 32951 „nieudane” żądania. Nie mogę tego rozgryźć.
Gdy test był uruchomiony, byłem w stanie uzyskać doskonały dostęp do mojej strony internetowej z komputera domowego, chociaż czasy ładowania strony na dole strony były zgłaszane jako .5 zamiast zwykłego .02. Jednak nigdy nie miałem nieudanej prośby.
Dlaczego więc AB zgłasza, że połowa połączeń kończy się niepowodzeniem? A co w tym kontekście oznacza „Długość:”?
benchmarking
load-testing
apachebench
Benzoes
źródło
źródło
Odpowiedzi:
Nieważne. „Błąd długości” wskazuje jedynie, że około połowa czasu trwania odpowiedzi była inna.
Ponieważ zawartość jest dynamiczna, prawdopodobnie jest to identyfikator sesji lub coś w tym rodzaju.
źródło
Aby opisać problem innymi słowy:
Narzędzie analizy porównawczej apache (ab) zakłada, że długość odpowiedzi będzie taka sama podczas całego testu. Przechowuje długość pierwszej odpowiedzi. Jeśli którakolwiek z dalszych odpowiedzi ma inną długość treści, skutkują „błędami długości”.
Poniższy raport o błędach Apache wydaje się potwierdzać, że: Błąd ASF 42040
Podsumowanie : Jeśli podajesz jakąkolwiek treść o zmiennej długości, prawdopodobnie powinieneś zignorować tego rodzaju niepowodzenia żądania ab.
Edycja : Ostatnio zauważyłem, że
ab
polecenie ma nową (przynajmniej dla mnie) opcję:Widzę go w ab wersji 2.3 <$ Wersja: 1528965 $>, ale nie widzę go w ab wersji 2.3 <$ Wersja: 655654 $> , więc prawdopodobnie został dodany stosunkowo niedawno.
źródło
Przykro mi, że wskrzesiłem stare pytanie, ale było to pierwsze, które pojawiło się w Google. Czasami błąd długości zgłoszony przez ab mógł być spowodowany prawdziwym problemem: jeśli połączenie zostanie zamknięte po stronie serwera, zanim klient nie otrzyma całkowitej ilości bajtów zadeklarowanych w nagłówku Content-Length. Może się tak zdarzyć, jeśli między klientem a serwerem istnieją inne podmioty, na przykład ręcznie naiwne usługi równoważenia obciążenia (mój przypadek).
źródło