FastHttp Loader alternatywa JMetera? Przedmiotowa aplikacja jest to projekt znajdujący się na GitHubie. W ramach tego artykuły zweryfikujemy, czy lekki projekt GitHubowy może równać się z takim narzędziem jak JMeter.
Co to za narzędzie?
Jak czytamy w opisie twórcy, FastHttpLoader został stworzony w celu uproszczenia testów. Narzędzie wykrywa możliwości serwera, analizuje odpowiedzi. Narzędzie mimo, że proste, pozwala na generowanie raportów HTML wraz z przydatnymi dla przeprowadzającego testy wykresami.
Pobieramy narzędzie i zaczynamy testowanie.
Najszybszą metodą jest pobranie projektu z GitHuba.
github.com/hagen1778/fasthttploader
Następnie uruchom test poprzez wpisanie komendy.
fasthttploader http://www.AdresTwojejStrony.pl
W tym momencie przeprowadzisz test randomową ilością zapytań. Po przeprowadzeniu testu powinieneś otrzymać wyniki:
------ Burst Throughput ------
Elapsed time: 5.000740s
Req done: 2955; Success: 100.00 %
Rps: 590.912523; Connections: 500
Errors: 0; Timeouts: 0
------ Adjustment test ------
Elapsed time: 30.000411s
Req done: 37684; Success: 100.00 %
Rps: 1256.116142; Connections: 1509
Errors: 0; Timeouts: 0
------ Loading test ------
Elapsed time: 20.000837s
Req done: 36433; Success: 100.00 %
Rps: 1821.573798; Connections: 1738
Errors: 0; Timeouts: 0
Jakie mamy możliwości testowania.
Zgodnie z instrukcją mamy możliwość przeprowadzenia testów z różnymi parametrami, które z zapisami twórcy wyglądają tak:
Usage: fasthttploader [options...] <url>
Notice: fasthttploader would force agressive burst stages before testing to detect
max qps and number for clients.
To avoid this you need to set -c and -q parameters.
Options:
-A string
Set Accept headers
-T string
Set content-type headers (default "text/html")
-b string
Set body
-c int
Number of supposed clients (default 500)
-cpuprofile string
write cpu profile to file
-d duration
Cant be less than 20sec (default 30s)
-debug
Print debug messages if true
-disable-compression
Disables compression if true
-gatewayAddr string
Address of PushGateway service (default "localhost:9091")
-h string
Set headers
-httpClientKeepAlivePeriod duration
Interval for sending keep-alive messageson keepalive connections.
Zero disables keep-alive messages (default 5s)
-httpClientReadBufferSize int
Per-connection read buffer size for httpclient (default 8192)
-httpClientRequestTimeout duration
Maximum time to wait for http response (default 10s)
-httpClientWriteBufferSize int
Per-connection write buffer size for httpclient (default 8192)
-jobName string
Name of the job for PushGateway (default "pushGateway")
-k Disable keepalive if true
-m string
Set HTTP method (default "GET")
-memprofile string
write memory profile to this file
-q int
Request per second limit. Detect automatically, if not setted
-r string
Set filename to store final report (default "report.html")
-successStatusCode int
Status code on which a successful request would be determined (default 200)
-t duration
Request timeout (default 5s)
-web
Auto open generated report at browser
Realne parametry używane w trakcie testów.
Poniżej zaprezentuje Wam kilka różnych komend, których używam w trakcie korzystania z tego narzędzia. Nadmienić tylko należy, że narzędzie jest postawione na maszynie z Linuxem, zatem lokalizacja katalogów będzie nieco odmienna aniżeli na Windowsie.
/usr/local/inp/go/bin/fasthttploader -q 10 -c 10 -d 1m -r "Wynik.html" https://www.AdresTwojejStrony.pl
Teraz rozbierzemy na czynniki pierwsze polecenie, dzięki czemu w przyszłości sami będziecie już tworzyć własne:
– /usr/local/inp/go/bin/fasthttploader – uruchomienie narzędzia w Twojej lokalizacji;
– q 10 – limit żądań na sekundę;
– c 10 – liczba klientów;
– d 1m – czas trwania testu;
-r „Wynik.html” – nazwa Twojego raportu – domyślnie będzie w głównym katalogu;
https://www.AdresTwojejStrony.pl – adres url który ma być testowany.
Po przeprowadzeniu testu, będziecie mieli raport w pliku HTML, który będzie zawierał takie wartości.
Podsumowanie.
Czy FastHttp Loader alternatywa JMetera to zdanie prawdziwe? Widać, że narzędzie nie posiada wielu funkcjonalności takich jakie posiada JMeter. Porównanie z JMeterem którym wygrywa FastHttpLoader to na pewno prostota użycia z wiersza poleceń. Wpisujesz niezbędne dane i przeprowadzasz test. Dodatkowo przy większym obciążeniu, nie będziesz miał problemów z Java Heap Size znanych z JMetera. Minusem zapewne jest, brak dodatkowych pluginów, czy rozbudowanej integracji z narzędziami