SlideShare a Scribd company logo
1 of 18
Download to read offline
Rozproszone testowanie wydajności z
użyciem JMeter
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.
Simple Data Writer – umożliwia zapis danych do pliku w celu późniejszej analizy
• 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
Remote testing with JMeter

More Related Content

Similar to Remote testing with JMeter

ansible kmonticolo bezlogo
ansible kmonticolo bezlogoansible kmonticolo bezlogo
ansible kmonticolo bezlogoKamil Monticolo
 
Gluster FS
Gluster FSGluster FS
Gluster FS3camp
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linuxbm9ib2r5
 
PLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir JanukowiczPLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir JanukowiczPROIDEA
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaWojciech Lichota
 
Extended FSM - Daniel Betke
Extended FSM - Daniel BetkeExtended FSM - Daniel Betke
Extended FSM - Daniel BetkeSKN Shader
 
Interoperability Testing
Interoperability TestingInteroperability Testing
Interoperability Testingkraqa
 

Similar to Remote testing with JMeter (9)

ansible kmonticolo bezlogo
ansible kmonticolo bezlogoansible kmonticolo bezlogo
ansible kmonticolo bezlogo
 
Gluster FS
Gluster FSGluster FS
Gluster FS
 
Serwer internetowy w systemie Linux
Serwer internetowy w systemie LinuxSerwer internetowy w systemie Linux
Serwer internetowy w systemie Linux
 
test
testtest
test
 
PLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir JanukowiczPLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
PLNOG15: Yang - latin of XXI centaury - Sławomir Janukowicz
 
2
22
2
 
Apache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użyciaApache http server - proste i zaawansowane przypadki użycia
Apache http server - proste i zaawansowane przypadki użycia
 
Extended FSM - Daniel Betke
Extended FSM - Daniel BetkeExtended FSM - Daniel Betke
Extended FSM - Daniel Betke
 
Interoperability Testing
Interoperability TestingInteroperability Testing
Interoperability Testing
 

Remote testing with JMeter

  • 2. 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
  • 3. + 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.)
  • 4. 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.
  • 5. • 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)
  • 6. • 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
  • 7. • 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.
  • 8. • 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.
  • 9. • 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.
  • 10. • 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.
  • 11.
  • 12. Simple Data Writer – umożliwia zapis danych do pliku w celu późniejszej analizy
  • 13. • 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
  • 14. • ${__machineName()}, ${__machineIP()}, ${__P(jmeterId,master)} – wyrażenia, które mogą być wykorzystane do wczytania właściwych plików • HTTP Simple Table Server
  • 15.
  • 16.
  • 17. • 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