目錄結構
一、預先準備工作
? ? 1. Linux服務器環境(LAMP)搭建
? ? 2. Linux服務器資源監控
? ? ? ? 1)Linux服務器資源監控
? ? ? ? 2)MySQL數據庫服務器監控
二、 Linux服務器(Slave機)配置JMeter運行&監聽環境
? ? 1. 安裝JAVA環境
? ? 2. 上傳JMeter至服務器
? ? 3. 配置JMeter環境變量
? ? 4. 啟動jmeter-server
? ? 5. 上傳ServerAgent至服務器,啟動監控服務器資源
三、Windows主控機(Master機)配置JMeter運行&監聽環境
? ? 1. 預先安裝JAVA和JMeter
? ? 2. 配置遠程主機地址
? ? 3. 啟動jmeter服務
? ? 4. 啟動JMeter GUI工具
四、執行JMeter分布式測試
? ? 1. 預先準備:錄制測試腳本
? ? 2. 對測試腳本進行參數配置,調試腳本
? ? 3. 執行JMeter分布式測試
? ? ? ? 1)執行方式選擇
? ? ? ? 2)設置:線程數、循環數、定時場景,啟動測試
本文在[JM_09]JMeter分布式測試-操作要點整理基礎上進行實踐拓展,實現Master機上運行JMeter對Linux服務器進行分布式測試的效果。
JMeter分布式測試示意圖
<本次配置>
Master機:Windows物理機
Slave機:Linux虛擬機;Windows物理機
Server:Linux虛擬機(被測服務器)
一、預先準備工作
1. Linux服務器環境(LAMP)搭建
CentOS7安裝PhpStudy,搭建Linux服務器環境(LAMP+LNMP)
CentOS7安裝PhpStudy+ECShop要點 & 異常處理
2. Linux服務器資源監控
1)Linux服務器資源監控
使用Nmon ==>Linux性能監控工具Nmon的安裝使用、生成數據報告
(可聯合JMeter插件工具、以及Linux自帶的top命令實時監控)
2)MySQL數據庫服務器監控
使用Spotlight ==>數據庫性能監控工具Spotlight on MySQL的安裝
二、 Linux服務器(Slave機)配置JMeter運行&監聽環境
1. 安裝JAVA環境
Master機和Slave機都需要安裝相同版本的JAVA環境(如:JDK 8),并配置環境變量。如:Linux系統中安裝JDK ==>CentOS7系統中安裝JDK8-過程記錄
JAVA目錄位置:/usr/local/java(預先在/usr/local目錄下創建java目錄:mkdir java)
2. 上傳JMeter至服務器
1)預先將apache-jmeter-4.0.zip壓縮包上傳至Linux服務器,如/usr/local/jmeter目錄下(預先在/usr/local目錄下創建jmeter目錄:mkdir jmeter)
2)解壓:unzip apache-jmeter-4.0.zip
3. 配置JMeter環境變量
以命令vi /etc/profile打開環境變量配置文件,在配置文件內接近末尾位置添加以下內容,如下:
# ---Set JMETER Environment---JMETER_HOME=/usr/local/jmeter/apache-jmeter-4.0PATH=$PATH:$JMETER_HOME/binexportJMETER_HOME PATH# ---Set JMETER Environment---
保存以上配置內容,然后使環境變量生效:source /etc/profile
查看JMeter配置版本:jmeter -v
4. 啟動jmeter-server
路徑切換:cd /usr/local/jmeter/apache-jmeter-4.0/bin
操作命令:jmeter-server或./jmeter-server
啟動jmeter-server服務,若出現以下異常:
解決方案 ==>[JMeter]...java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address_解決方案
具體操作:編輯jmeter-server文件,將服務器的主機IP設置為固定值(與Linux服務器ifconfig查詢出的實際IP保持一致)
# One way to fix this is to define RMI_HOST_DEF belowRMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.248.138
然后再次啟動jmeter-server,即可正常啟動
若出現以下異常:
"Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
An error occurred: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)"
則修改jmeter.properties文件為如下:
# Set this if you don't want to use SSL for RMIserver.rmi.ssl.disable=true
5. 上傳ServerAgent至服務器,啟動監控服務器資源
1)將ServerAgent-2.2.1.zip壓縮包上傳至Linux服務器,如/usr/local/server-agent目錄下(預先在/usr/local目錄下創建server-agent目錄:mkdir server-agent)
2)解壓:unzip ServerAgent-2.2.1.zip
3)查看文件權限:ls -la
確保startAgent.sh具有可執行權限
4)啟動ServerAgent:./startAgent.sh
ServerAgent默認監聽4444端口,如下:
三、Windows主控機(Master機)配置JMeter運行&監聽環境
1. 預先安裝JAVA和JMeter
在Windows主控機中,提前安裝好與Linux服務器相同版本的JAVA、JMeter,并各自配置好系統環境變量
1)JAVA環境變量:
JAVA_HOME:C:\Program Files\Java\jdk1.8.0_91(JDK安裝的目錄)
Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;(最前面有一個點.)
2)JMeter環境變量:
JMETER_HOME:E:\CI_Env\apache-jmeter-4.0
PATH:%JMETER_HOME%\bin;
2. 配置遠程主機地址
配置文件:jmeter.properties
配置JMeter的bin目錄(E:\CI_Env\apache-jmeter-4.0\bin)下的jmeter.properties文件,添加remote_hosts遠程地址和端口(Slave機對應的IP,默認端口1099),如下:
# Remote Hosts - comma delimited#remote_hosts=127.0.0.1#remote_hosts=localhost:1099,localhost:2010remote_hosts=192.168.248.138:1099,127.0.0.1:1099
3. 啟動jmeter服務
雙擊運行jmeter-server.bat,與Linux服務器(Slave機)保持通信聯通
路徑:E:\CI_Env\apache-jmeter-4.0\bin
4. 啟動JMeter GUI工具
啟動程序:jmeter.bat
路徑:E:\CI_Env\apache-jmeter-4.0\bin
四、執行JMeter分布式測試
1. 預先準備:錄制測試腳本
==>[JPT_05]性能測試-腳本開發(登錄&隨機購買業務)
2. 對測試腳本進行參數配置,調試腳本
利用Badboy錄制腳本,導入到JMeter的GUI操作界面中進行腳本調試
變量設置:
【User Defined Variables】
設置參數:host=192.168.248.138(本次Linux服務器的IP)
參數引用:
ServerName or IP:${hosts}
Host / IP:${hosts}
PS:-----【Important!】-----
【1】腳本中定義變量host,目的是為了便于腳本的復用和移植。當服務器IP變更時,只需要在【User Defined Variables】配置元件中將host取值修改,其他關聯引用host的位置也會自動獲取該值,而不需要每個位置都手動去修改,存在耗費時間且可能修改遺漏的風險。
【2】連接Linux服務器時,為了確保正常執行測試,每個請求中涉及url地址的Path路徑需要大小寫嚴格書寫(與Linux服務器中配置的url保持一致)。
【3】對于JMeter4.0,若要使得其性能監控插件可正常監控展示出圖像曲線,在執行測試之前,需要在【Write results to file / Read from file】的Filename選擇框中添加某個自定義的jtl文件的絕對路徑,如:E:\CI_Env\JM_LogResult\123.jtl(存放jtl文件的目錄已提前創建好,初始時jtl文件可不存在,執行測試完成之后即會生成與自定義相同名稱的jtl文件)。
【4】JMeter腳本中若包含有【CSV Data Set Config 】配置元件配置了csv參數化的文件,需要將該參數化的文件分別上傳到每一臺Slave機的JMeter的bin目錄下存放(與jmeter-server服務文件在同一目錄),同時Master機也需要存放該參數化文件到JMeter的bin目錄下;然后在JMeter的GUI界面中【CSV Data Set Config 】配置Filename為相對路徑(如:username.txt),不宜采用絕對路徑,否則執行測試可能異常(可查看Linux服務器中的jmeter-server.log日志文件),測試過程中Linux服務器中的測試數據可能不會返回到Windows主控機的JMeter界面中展示。
具體可參看 ==>JMeterThread:Test failed! java.lang.IllegalArgumentException: File...must exist and be readable_解決方案
3. 執行JMeter分布式測試
1)執行方式選擇
【1】Run --> Remote Start --> 192.168.248.138:1099
【2】Run --> Remote Start --> 127.0.0.1:1099
【3】Run --> Remote Start All
【4】Run --> Start
<1> 調用Slave機(遠程Linux服務器)上JMeter的Non-GUI模式執行測試
<2> 調用Slave機(此處Master機本身也作為Slave機之一)執行測試
<3> 調用所有配置過的Slave機器執行測試
<4> 常規的執行測試方式,以當前Master機對Linux服務器執行測試
2)設置:線程數、循環數、定時場景,啟動測試
本次選定執行方式:Run --> Remote Start All
配置線程、循環次數(Step1配置)、定時等的設置,開啟執行測試,效果如下:
PerfMon Metrics Collector:監控服務器資源
Hits per Second
原文鏈接:http://www.lxweimin.com/p/bb752b99b95f