Jmeter: Non HTTP response message

W przypadku gdy w odpowiedzi na wysłany “request” zgłaszany jest błąd typu: Non HTTP response message: server failed to respond, dodatkowo błędy te pojawiają się dla losowych transakcji a ich ilość rośnie wraz ze wzrostem natężenia, pokusić się można o stwierdzenie, że serwer będący przedmiotem testu ma problemy z odpowiedzią na wszystkie żądania.

Zanim jednak wydamy taką decyzję, zastanówmy się czy powód nie leży po stronie klienta.

W sytuacji opisanej poniżej, pomocna okazała się zmiana konfiguracji narzędzia używanego do generowania obciążenia.

Począwszy od wersji 2.11 Jmeter, domyślnie wyłączono ponawianie żądań oraz tzw. „Stale check”. Nie stało się to oczywiście bez powodu. „Zasobożerność” tych funkcjonalności może mieć wpływ na wyniki testu a w krytycznym przypadku zmienić faktyczne obciążenie.

Symptomy (w tym konkretnym projekcie wyglądało to następująco, jednak zachowanie może odbiegać od opisu):

Przy uruchomionym jedynie jednym wątku, wszystkie transakcje wykonywane były ze statusem „pass”. Problem pojawiał się jednak w momencie gdy ilość wątków/obciążenie rosło. Dodatkowo rozłożenie błędów było losowe (prawie, dla niektórych zapytań procent błędów był większy, dla niektórych przy określonym obciążeniu, nie pojawiały się wcale).

meter_response

meter_aggregated_res

meter_tableview

Rozwiązanie:

Opcję ponawiania żądań (retry) włączamy dodając linię w pliku user.properties (folder bin):

httpclient4.retrycount=1 (istnieją inne warianty np. dla implementacji httpclient3)

Aby zminimalizować zwiększenie obciążenia przy faktycznym błędzie serwera, proponuję ustawić wartość 1, spowoduje to jednokrotne powtórzenie podczas nieudanej próby.

Konfiguracja samplera http:

meter_http_imp

Aby umożliwić opcję „stale check” (odświeżanie stanu) w tym samym pliku (user.properties) dodajemy też:

hc.parameters.file=hc.parameters

w pliku hc.parameters usuwamy znak komentarza (#) przy linii:

#http.connection.stalecheck$Boolean=false

oraz ustawiamy opcję true (http.connection.stalecheck$Boolean=true).

 

Hints:

Jak zwykle zanim zmodyfikujemy pliki robimy kopię.

Należy podchodzić z dystansem do najnowszych wersji oprogramowania, szczególnie jeśli znajomość narzędzia jest mała, wtedy diagnoza problemu staje się trudniejsza.

Czytaj dalej:

https://bz.apache.org/bugzilla/show_bug.cgi?id=56119

http://jmeter.apache.org/usermanual/properties_reference.html

Advertisements