序
????????本文記錄了我在新公司的首次壓測遇到的一些問題以及解決方案。公司服務部署在國外,網絡延遲導致的壓不上去,需要本地調試腳本,然后用國外服務器壓測的過程。同時記錄了過程中遇到的一些問題,特別是Jmeter本身占用CPU資源,需要修改參數。
安裝包
Jmeter包,已調好配置參數:
通過網盤分享的文件:apache-jmeter-5.6.3.zip
鏈接: https://pan.baidu.com/s/1-L6ASOdnBwvWi5_gpAW1gw?pwd=4uce 提取碼: 4uce?
--來自百度網盤超級會員v3的分享
腳本配置
1、新建線程組
2、腳本配置
新加HTTP請求
腳本配置
添加請求頭
添加參數化
注意用相對路徑,因為要拷貝到遠程機器運行,絕對路徑會找不到文件,運行不起來,還沒報錯。
3、壓測報表
虛擬機配置
安裝Java環境
1、先從官網下載jdk1.8.0_131.tar.gz,再從本地上傳到Linux服務器
2、解壓:tar -xzf?jdk1.8.0_131.tar.gz,生成文件夾?jdk1.8.0_131
jdk存放目錄:/home/azureuser/jmeter/jdk1.8.0_451
修改配置:vi /etc/profile
export JAVA_HOME=/home/azureuser/jmeter/jdk1.8.0_451
export PATH=$JAVA_HOME/bin:$PATH
加載配置 : source /etc/profile
查看是否安裝成功:java -version
安裝Jmeter
1、本地Jmeter打包。最好用跟本機一樣的jmeter,不會出現插件不一致等導致的運行不起來
2、傳到服務器
3、解壓縮
?tar -xvzf apache-jmeter-5.6.3.tgz?
unzip
jmeter路徑:/home/azureuser/jmeter/apache-jmeter-5.6.3
4、配置Jmeter環境變量。
vi /etc/profile,再添加如下變量
export JMETER_HOME=/home/azureuser/jmeter/apache-jmeter-5.6.3
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:
export PATH=$JMETER_HOME/bin:$JAVA_HOME/bin:$PATH
5、source /etc/profile (讓配置文件立馬生效)
6、查看是否安裝成功,執行命令:jmeter -v
設置Jmeter啟動內存
1.創建setenv.sh文件
在jmeter的bin目錄下新建setenv.sh配置文件,在文件中配置jvm參數
export JVM_ARGS="-Xms4096m -Xmx4096m -XX:MaxMetaspaceSize=2048m"
大小參考本機可用內存,50%-70%之間
修改Jmeter參數
?1、system.properties
增加mode=StrippedBatch
2、解決timewait問題
修改所有jmeter主機-負載機配置 使用httpclient4客戶端
jmeter.properties
httpclient4.time_to_live=300000
httpclient4.validate_after_inactivity=1000
httpclient4.request_sent_retry_enabled=true
httpclient4.retrycount=2
hc.parameters.file=hc.parameters
httpclient.reset_state_on_thread_group_iteration=false
3、hc.parameters
http.connection.stalecheck$Boolean=true
4、客戶端配置
運行jmeter
jmx文件單獨放/home/azureuser/jmeter/jmx
jmeter安裝于/home/azureuser/jmeter/apache-jmeter-5.6.3
本地文件上傳到服務器,注意使用到的數據文件也要傳過去,可以整個目錄傳(使用的ssh軟件:electerm)
進入 jmx所在目錄
jmeter -n -t hawbTracks.jmx -l result_hawbTracks_05310813.jtl -L DEBUG
jmeter -n -t hawbTracks.jmx -l result_hawbTracks_05312207.jtl -e -o ./result? 生成html報告,result 目前提前清空
jmeter -n -t hawbTracks.jmx -l result_hawbTracks_06031927.jtl -e -o ./06031927_result
監控查看
1、壓測指標QPS、RT。關注響應時間增加明顯,QPS增量低,無需再加QPS,防止壓掛服務器。
2、服務器情況查看
機器情況以Grafa查看
服務qps、響應,以及響應時間明細用skywalking查看
3、從網關層壓測,所以網關服務器性能也需要關注下
4、壓測服務器的性能也需關注下。可以開多個窗口,top命令看服務器情況
常見命令:
top:本機性能指標查看,1 - 每個cpu指標查看,MiB Mem-內存查看
ps -ef pid : 進程查看
報告查看
1、報告回傳到本機
2、打開jtl文件
3、result中index.html瀏覽器打開
使用jmeter -n -t hawbTracks.jmx -l result_hawbTracks_05312207.jtl -e -o ./result? 生成html報告,可以直接查看
問題記錄
1、網絡損耗
本地壓測由于是中國網段壓測美國網段,網絡損耗巨大。對比如下:
本地壓測情況,3個并發
服務器壓測情況,壓測服務器與被壓測服務器都在美國
對比發現,網絡損耗在600ms。所以需要使用同區域壓測服務器來壓,得到真實的性能情況。
2、Jmeter中響應時間疑惑
現象:本地Jmeter壓測時間穩定在600ms左右,但是POSTMAN是偶爾600ms多,多數在200ms。
原因:Postman接口發送使用的端口,會有鏈接緩存,不會每次新建連接。現象上佐證:隔段時間請求是600+ms,不間隔再次訪問是200ms。
3、服務端Jmeter運行報錯,jp@gc組件找不到
原因:運行的官網下載的jmeter,里面沒有相關組件導致
4、服務端Jmeter運行無數據生成,無報錯,直接停止了
配置的腳本的,csv文件配置的windows中絕對路徑,拷貝到linux上,找不到文件,導致運行不起來。
5、壓測機本身性能問題,導致QPS上不去
1、關閉部分java程序。 ps -ef pid查看進程信息
2、增加jmeter內存大小
3、多臺機器壓測
4、修改jmeter配置 - 有用