remote testing with jmeter
TRANSCRIPT
2
Master – maszyna kontrolująca testy
Slave – maszyna, na której został uruchomiony process jmeter-server. Przyjmuje
instrukcje kontrolne od mastera i generuje obciążenie
+ Wyniki testów zapisane na masterze
+ Zarządzanie wieloma instancjami JMeter-a z poziomu Mastera
+ Nie ma konieczności kopiowania planu testów na Slaves
- Niedystrybuowanie zewnętrznych zasobów (tj. pliki z danymi testowymi, pliki
załączane w requestach Multipart Form Data itp.)
Ten sam plan testów jest uruchamiany na każdej z maszyn. Liczba
wątków podana w Thredgrupach nie dzieli się na liczbę serwerów. To
oznacza, że jeśli w planie testów zostanie ustawione 100 wątków (VU) i
mamy 3 maszyny typu slave to finalnie serwer, który testujemy zostanie
obciążony 300 wirtualnymi użytkownikami.
W celu wyeliminowania wpływu sieci internet/vpn zaleca się
umieszczenie poszczególnych load generatorów w tej samej
infrastrukturze sieciowej, w której umieszczono serwery aplikacyjne.
Tryb Master – Slave konsumuje zasoby po stronie Mastera tym większe
im więcej węzłów slave zostało dołączonych. Należy obserwować
obciążenie Mastera oraz dostosować ilość zbieranych danych do
rzeczywistych potrzeb.
• Poznaj wymagania klienta, skonfrontuj je z rzeczywistością
• Zaplanuj liczbę węzłów
• Pojedynczy węzeł JMetera wykorzystuje 2-3 GHz CPU i może obsłużyć
od 150 – 600 wątków w zależności od typu testu
• Upewnij się, że ruch sieciowy pomiędzy węzłami JMetera jest
udrożniony (reguły na firewallach i urządzeniach sieciowych)
• Upewnij się, że z każdego węzła testującego (Slave) istnieje
połączenie z serwerem testowym
• Upewnij się, że wersje oprogramowania na każdym serwerze
są identyczne (JVM, JMeter, JMeter-Plugins)
• Domyślna ilość przydzielonej pamięci dla JVM z reguły jest niewystarczająca • zwiększ rozmiar pamięci HEAP do ok 80% całkowitej pamięci fizycznej. Możesz to zrobić
poprzez modyfikację poniższej lini w skrypcie startowym (jmeter/jmeter.bat):
• Master nie rozsyła plików z danymi testowymi dlatego należy je przegrać do
właściwego katalogu na maszynach zdalnych
• W pliku user.properties należy umieścić dodatkową konfigurację (np. konfiguracja
ssl-a, sposobu przesyłania wyników, konfigurację danych, która jest przesyłana do
mastera
• Aby uruchomić nody Jmeter-a, uruchom serwer na wszystkich
maszynach przy użyciu właściwego skryptu startowego:
• JMETER_HOME/bin/jmeter-server (unix)
• JMETER_HOME/bin/jmeter-server.bat (windows) script.
• Domyślnie, silnik Jmetera wykorzystuje do nasłuchu port 1099.
Jeśli ten port jest zajęty lub z innego powodu nie ma możliwości
jego zastosowania możemy skorzystać z property server_port.
Jeśli w pliku user.properties podamy inną wartość niż domyślna
wtedy dany serwer będzie nasłuchiwał na tym porcie.
• Domyślnie, silnik Jmetera wykorzystuje do komunikacji losowy
port RMI. Powoduje to problem z właściwym skonfigurowaniem
firewalli (wymagane otwarcie całego ruchu). Aby ten problem
rozwiązać można skorzystać z property server.rmi.localport.
Jeśli w pliku user.properties podamy tą wartość różną od zera
to właśnie ten port zostanie wykorzystany.
• plik user.properties
• powinien zawierać identyczną konfigurację z slave-ami
• dodatkowo powinien zawierać property remote_hosts zawierające listę adresów ip lub nazw domenowych serwerów slave. Jeśli serwer nie nasłuchuje na domyślnym porcie (1099) należy podać również ten port.
• jmeter -n -t script.jmx -l jmeter.jtl -r • uruchamia plan testów script.jmx na wszystkich maszynach zdefiniowanych w
pliku user.properties. Wyniki sampli zapisywane są w jmeter.jtl (nie ma potrzeby uzywania Simple Data Writer
• jmeter -n -t script.jmx -l jmeter.jtl –R slave1,slave2… • uruchamia plan testów script.jmx na maszynach wskazanych w parametrze R
• Dodatkowe flagi: • -Gproperty=value – przekazuje property do wszystkich serwerów
• -X – Wyłącza zdalnego noda po zakończniu testów
• ${__machineName()}, ${__machineIP()}, ${__P(jmeterId,master)}
– wyrażenia, które mogą być wykorzystane do wczytania
właściwych plików
• HTTP Simple Table Server
• http://jmeter.apache.org/usermanual/remote-test.html
• http://jmeter.apache.org/usermanual/best-practices.html
• https://www.blazemeter.com/blog/nine-easy-solutions-jmeter-
load-test-%E2%80%9Cout-memory%E2%80%9D-failure
• https://www.blazemeter.com/blog/dear-abby-blazemeter-
how-do-i-run-jmeter-non-gui-mode
• http://www.artofsoftwaredevelopment.com/performance/perf
ormance-testing-in-the-cloud-with-jmeter-aws
• https://aws.amazon.com/ec2/pricing/
• https://blazemeter.com/pricing