2009-02-23 13 views
179

zrobić kilka testów obciążeniowych, dla własnej ciekawości, na moim serwerze Pobiegłem:Testowanie obciążenia z AB ... fałszywe nieudanych prób (długość)

ab -kc 50 -t 200 http://localhost/index.php 

To otwiera 50 keep-alive połączeń dla 200 sekund i po prostu zatrzaskuje mojego serwera z prośbą o index.php

w moich wynikach wyszukiwania, 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 

zanotować 32951 "failed" żądań. Nie mogę tego rozgryźć.

Po uruchomieniu testu udało mi się uzyskać dostęp do mojej strony internetowej z mojego domowego komputera, chociaż czas ładowania strony na dole strony został zgłoszony jako .5 zamiast zwykłego .02. Jednak nigdy nie miałem nieudanego wniosku.

Dlaczego więc AB zgłasza, że ​​połowa połączeń kończy się niepowodzeniem? A co w tym kontekście oznacza "Długość:"?

Dzięki

+0

Czy Twoja witryna ma system równoważenia obciążenia? Zobacz mój wpis na blogu na temat [testowania obciążenia za pomocą load balancerów] (http://blog.browsermob.com/2009/02/tips-for-testing-with-load-balancers/), który może wyjaśniać "to działa dla mnie" sytuacja w testowaniu obciążenia. –

Odpowiedz

312

Nieważne. "Błąd długości" wskazuje jedynie, że mniej więcej połowa czasu odpowiedzi była inna.

Ponieważ zawartość jest dynamiczna, prawdopodobnie jest to identyfikator sesji lub coś w tym stylu.

+6

Hej, właśnie wpadłem na ten sam "problem" i cieszę się, że ta odpowiedź była tutaj. Thanx! –

+1

Ja też! Czy nie mogą tego nazwać czymś innym niż "porażką" !? – scotts

+2

Dzięki za odpowiedź, miałem dokładnie takie same wątpliwości. – Saiyine

97

Aby opisać problem, innymi słowy:

Narzędzie apache benchmarking (ab) zakłada, że ​​długość zawartości odpowiedź będzie taka sama podczas całego testu. Przechowuje długość treści pierwszej odpowiedzi. Jeśli dowolna z dalszych odpowiedzi ma inną długość treści, powoduje "błędy długości".

Po apache raportu o błędzie wydaje się potwierdzać, że: ASF Bug 42040

Podsumowanie: Jeśli jakiemukolwiek zawartość zmiennej długości, powinieneś ignorować tego rodzaju ab awarii żądanie.

Edit: Niedawno zauważyłem, że komenda ab ma nowy (przynajmniej dla mnie) Opcja:

-l Accept variable document length (use this for dynamic pages) 

Widzę to w ab Version 2.3 < $ Revision: 1528965 $ > ale nie można tego zobaczyć w ab Wersja 2.3 < $ Wersja: 655654 $ >, więc prawdopodobnie została dodana stosunkowo niedawno.

+2

dzięki za opcję "-l" podpowiedź! – gue

+3

Dla każdego na Macu istnieje duża szansa na to, że twoja wersja ab jest z tyłu i nie zajmie. Możesz zainstalować ze źródła lub homebrew, ale "brew install ab" nie działa, ponieważ jest częścią pakietu apache - możesz zainstalować za pomocą "brew install homebrew/apache/ab". – netpoetica

5

Przepraszam za ressurrect stare pytanie, ale to było pierwsze, które pojawiły się w Google. Czasami błąd długości zgłoszony przez ab mógł być spowodowany rzeczywistym problemem: jeśli połączenie jest zamykane po stronie serwera, zanim całkowita ilość bajtów zadeklarowanych w nagłówku Content-Length nie została odebrana przez klienta. Może się to zdarzyć, jeśli między klientem a serwerem są inne strony, na przykład naiwne ręczne równoważenia obciążenia (mój przypadek).

Powiązane problemy