<!-- linux系統修改系統環境變量 系統語言-->
[root@web-249 ~]# env|grep LANG
LANG=zh_CN.UTF-8
[root@web-249 ~]# export LANG=zh_CN.UTF-8
[root@web-249 ~]# export LANG=en_US.UTF-8
[root@web-249 ~]# env|grep LANG
LANG=en_US.UTF-8
<!-- JMETER 不同線程組 變量值 的參數傳遞-->
線程組 1
在線程組1中使用__setProperty函數設置jmeter屬性值(此值為全局變量值),將所需變量值如${oldtoken}設置為jmeter屬性值,即newtoken,示例:
1、添加--后置處理器 -- 正則表達式
2、使用正則表達式獲取第一個線程組得到的響應信息 例如:oldtoken
3、添加--后置處理器 -- BeanShell PostProcessor
4、設置 BeanShell PostProcessor
Parameters: ${oldtoken}
Script:
String oldtoken = bsh.args[0];
print (oldtoken);
${__setProperty(newtoken,${oldtoken},)}
線程組 2
在線程組2中使用_p函數來調用jmeter屬性,獲取屬性值,從而實現跨線程組,參數值傳遞。
1、直接使用 ${__P(newtoken,)} 即可獲取token的值
求並發用戶數公式
在實際的性能測試工作中,測試人員一般比較關心的是業務並發用戶數,也就是從業務的角度關注應該設置多少個並發數比較合理。
下面找一個典型的上班簽到系統,早上8點上班,7點半到8點的30分鍾的時間里用戶會登錄簽到系統進行簽到。公司員工為1000人,平均每個員上登錄簽到系統的時長為5分鍾。可以用下面的方法計算。
C=1000/30*5=166.7
C表示平均並發用戶數,那么對這個簽到系統每分鍾的平均在線用戶數為166
當然,在性能測試上,任何公式都不是嚴謹的,最重要的是對系統做出有效正確的分析。
--------------------------
估算並發用戶並發數公式:
1、用戶從登陸系統到退出系統的間隔時間L
2、登陸系統的用戶數量n
3、被考察的時間長度T
並發用戶數C=nL/T
舉例:
如果系統有3000個注冊用戶,平均每天400個用戶要訪問系統,一般一個典型用戶在系統中停留4小時(從登陸到退出),在一天內,用戶在8小時內使用該系統
並發用戶數=400X4/8=200 如果你要計算峰值用戶數的話,用另外一個公式
C1=C+3 X sqr(C)
C表示並發用戶數
根據我之前算出的結果,並發用戶數是200,那么公式為:
C1=200+3 x sqr(200)=242
<!--jmeter 鏈接數據庫測試設置-->
1、測試計划添加驅動
2、添加 測試元件 JDBC Connection Configuration
3、配置連接信息
Datebase URL :jdbc:mysql://localhost:3306/test
JDBC Driver class:org.gjt.mm.mysql.Driver
Username :root
Password :
Datebase URL Driver class Database
MySQL jdbc:mysql://host:port/{dbname} com.mysql.jdbc.Driver
PostgreSQL jdbc:postgresql:{dbname} org.postgresql.Driver
Oracle jdbc:oracle:thin:user/pass@//host:port/service oracle.jdbc.driver.OracleDriver
Ingres (2006) jdbc:ingres://host:port/db[;attr=value] ingres.jdbc.IngresDriver
MSSQL jdbc:sqlserver://IP:1433;databaseName=DBname com.microsoft.sqlserver.jdbc.SQLServerDriver
或者 或者
jdbc:jtds:sqlserver://localhost:1433/"+"library" net.sourceforge.jtds.jdbc.Driver
<!-- jmeter linux 部署環境 -->
1、上傳tgz文件
2、解壓文件 tar -zxvf filename
3、解壓完成后,添加環境變量:
vi /etc/profile 鍵入i,可編輯狀態,按ESC,退出可編輯狀態到命令行,鍵入“:wq”,按回車保存並退出vi
添加下述兩行:
export JMETER=/root/apache-jmeter-3.0
export PATH=$JMETER/bin:$PATH
export CLASSPATH=$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH
完成添加后下述命令使配置生效:
source /etc/profile
檢查是否配置成功:命令行輸入
jmeter -v
4、執行JMX文件 jmeter -n -t baidu.jmx -l /root/log.jtl
5、檢查執行結果 cat /root/log.jtl 出現200,OK則執行通過
分布式操作
6、bin目錄下啟動server-jmeter
sh jmeter-server 或者 nohup sh jmeter-server &
7、檢查啟動是否成功
ps -ef|grep jmeter-server
ps aux|grep jmeter-server
<!-- jmeter 分布式性能測試(Agent配置) -->
在1.4G Hz~3GHz 的CPU 、1GB 內存的 JMeter 客戶端上,可以處理線程 100~300。
但是Web Service 例外。XML處理是 CPU 運算密集的,會迅速消耗掉所有的CPU 。
一般來說,以XML技術為核心的應用系統,其性能將是普通Web 應用的 10%~25% 。
另外,如果所有負載由一台機器產生,網卡和交換機端口都可能產生瓶頸,所以一個JMeter 客戶端線程數不應超過 100 。
采用JMeter 遠程模式並不會比獨立運行相同數目的非GUI 測試更耗費資源。
但是,如果使用大量的JMeter 遠程服務器,可能會導致客戶端過載,或者網絡連接發生擁塞。
使用多台機器產生負載的操作步驟如下:
(1)在所有期望運行jmeter作為 負載生成器的機器上安裝jmeter, 並確定其中一台機器作為 controller ,其他的的機器作為agent 。
(2) 運行所有 agent 機器上的jmeter-server 文件(假定使用兩台機器192.168.9.99 和192.168.9.130 作為agent)
(3)在controller機器的jmeter的bin目錄下,找到jmeter.properties 文件,編輯該文件:
查找:
remote_hosts=127.0.0.1
修改為:
remote_hosts=192.168.9.99:1099,192.168.9.130:1099
這里要特別注意端口后,有些資料說明端口1644為jmeter的controller 和agent 之間進行通信的默認RMI端口號,
但是在測試時發現,設置為1644運行不成功,改成1099后運行通過。另外還要留意agent的機子是否開啟了防火牆等。
<!-- jmeter 分布式性能測試(多網卡配置) -->
我們要在多網卡的服務器上開啟RMI服務的話必須指定IP,使他們能夠在同一個網段內。
需要以下幾步(假定所有機器都在10.120.11.*網段,agent服務器為linux,controller服務器為windows):
1、 修改agent服務器,指定agent機器的IP
修改jmeter-server文件
# vi jmeter-server
修改RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(需要連接的IP)
2、修改server服務器,指定server機器的IP
修改jmeter.bat文件
新增set rmi_host=-Djava.rmi.server.hostname=10.120.11.214
修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%