SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à 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