FastHttp Loader alternatywa JMetera?

FastHttpLoader

Loading

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.

(źródło – GitHub.com/hagen1778)

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