jmeter 環境部署、數據庫設置、分布式設置、多網卡配置等隨筆


<!-- 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%


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM