18
Rozproszone testowanie wydajności z użyciem JMeter

Remote testing with JMeter

  • Upload
    lodqa

  • View
    160

  • Download
    0

Embed Size (px)

Citation preview

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