在進行性能測試的時候,隨着壓力的不斷增大,會出現tps的瓶頸。
出現瓶頸,會有兩個原因,1.服務器導致的瓶頸 ,2壓力不夠。
如果是壓力不夠的情況,要么換更好的機器進行壓測,或者多台機器進行分布式壓測。
Jmeter 如何開展分布式?
原理如下:
1.Jmeter分布式壓測時,一台機器作為master,其他的則為slave,master負責請求的分發,slave負責執行。
2.執行時,master會把腳本發送到每台slaver上,slaver 拿到腳本后就開始執行,slaver執行時不需要啟動GUI,如果引用到csv等外部的文件,則每台slaver所在的機器都需要相應位置放置該文件。
3.執行完成后,slaver會把結果回傳給master,master會收集所有slaver的信息並匯總。
這里有一個坑,如果slave 和master是多網卡的機器,master去slave執行的時候,會把網卡中的任意一個網卡ip傳過去,最后slave執行完后,把結果回傳給master,如果這時回傳給master是一個錯誤的ip,則會導致請求超時的情況,導致失敗。
正確步驟如下:
1.啟動slave,在slave機中jmeter-server中
windows 修改RMI_HOST_DEF=-Djava.rmi.server.hostname=10.120.11.82(slave機的ip)
運行jmeter-server,Windows運行jmeter-serve.bat
linux:
./jmeter-server -Djava.rmi.server.hostname=10.120.11.82(slave機的ip)
2.啟動master
雙網卡需要注意:master機需要指定自己機器的ip,要不則會出問題。
window:
新增set rmi_host=-Djava.rmi.server.hostname=10.120.11.214(master 的ip)
修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%
linux:
新增 rmi_host=“-Djava.rmi.server.hostname=10.120.11.214”(master 的ip)
修改ARGS="$SERVER $DUMP $HEAP $NEW $SURVIVOR $TENURING $PERM $CLASS_UNLOAD $rmi_host"
修改完了后,開始壓力測試:
windows:
修改jmeter.properties,
remote_hosts=10.120.11.82:1099(更換為slave的ip)
遠程啟動這台機器
linux:
./jmeter -n -t testPlan.jmx -R 115.28.108.130 -l remote.jtl
linux下運行結果存在remote.jtl中。
注意:master和slave機中的jmeter版本必須一致(小版本也得一致)。
java的版本也得一致,不能一個java7一個java8.