Top Banner
Rozproszone testowanie wydajności z użyciem JMeter
18

Remote testing with JMeter

Apr 15, 2017

Download

Software

LodQA
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Remote testing with JMeter

Rozproszone testowanie wydajności z

użyciem JMeter

Page 2: Remote testing with 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

Page 3: Remote testing with JMeter

+ 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.)

Page 4: Remote testing with JMeter

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.

Page 5: Remote testing with JMeter

• 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)

Page 6: Remote testing with JMeter

• 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

Page 7: Remote testing with JMeter

• 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.

Page 8: Remote testing with JMeter

• 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.

Page 9: Remote testing with JMeter

• 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.

Page 10: Remote testing with JMeter

• 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.

Page 11: Remote testing with JMeter
Page 12: Remote testing with JMeter

Simple Data Writer – umożliwia zapis danych do pliku w celu późniejszej analizy

Page 13: Remote testing with JMeter

• 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

Page 14: Remote testing with JMeter

• ${__machineName()}, ${__machineIP()}, ${__P(jmeterId,master)}

– wyrażenia, które mogą być wykorzystane do wczytania

właściwych plików

• HTTP Simple Table Server

Page 15: Remote testing with JMeter
Page 16: Remote testing with JMeter
Page 17: Remote testing with JMeter

• 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

Page 18: Remote testing with JMeter