Jmeter壓力測試筆記(6)性能調測-壓力並發-模擬生產環境數據
問題原因找到了,那就好辦了。
找到阿里雲技術人員,讓他們強行給我們上架了一個共享代理模式的Redis。 並重新進行壓力測試。
哦豁~ 開心,壓力測試順利,異常率大大降低實際為:
資料庫DBA回饋,資料庫收到很多請求處理,資料庫開始正常工作。(之前都是,資料庫連接滿,但活躍連接只有1到5個)。 資料庫連接數在50到100之間波動,且基本都是活躍連接。
NGINX和php那邊都工作正常,伺服器cpu壓力下降。各項功能都平穩。
然後開始真真正正進行模擬生產用戶數據壓力測試:
生產環境數據如下:
高峰時期: 總並發連接數12w 活躍連接數10萬;新建連接數1300/s;吞吐量:6200/S。
如何通過調整jmeter腳本的執行緒數,吞吐量來實現該場景,就得多次嘗試了。
jmeter運行環境如下: centos7 java1.8.161; jmeter 5.2.1 4C8G。 阿里雲機器。
1,實現並發連接數和活躍連接數。
並發連接數=活躍連接數+非活躍連接數
活躍連接數=jmeter執行緒數*執行機器數量
非活躍連接數=tcp連接中斷數: 實際執行過程中發現:如果設置的吞吐量過高,會造成大量的非活躍連接數。與真實請求場景不一致。 後面細說。
如何提升活躍連接數:——加機器+記憶體。沒其它辦法。現在的機器一般cpu都是夠用的。 實際設置1800執行緒運行時,機器只有20%的cpu使用率。
通過測試的經驗計算,大概一個執行緒需要消耗3M記憶體。所有如果想跑2000執行緒,那麼你得設置虛擬機6000m,否則,會爆出記憶體溢出錯誤。
通過命令啟動執行機:
JVM_ARGS=”-Xms1024m -Xmx6000m” ./jmeter-server & ####注意,不要超過自己機器實際能使用的記憶體!!!!留點空閑給機器本身用,否則會很卡,很慢。異常高。
我喜歡這種方式,方便調整記憶體。哈哈。
順便寫幾個清理記憶體和殺進程的命令:
查看執行機運行日誌: tail -f apache-jmeter-5.2.1/bin/jmeter-server.log 查看1099埠: netstat -an|grep 1099 查看java進程: ps -ef|grep java 批量殺進程操作:我特別喜歡哈哈 ps -ef|grep java|awk '{print $2}'|xargs kill -9 統計查詢tcp 80埠數量: netstat -nat|grep -i 80|wc -l 統計查詢tcp time_wait 埠數量: netstat -an | awk '/^tcp/ {++s[$NF]} END {for(a in s) print a,s[a]}'
查看記憶體使用量:
free -m
同步快取:
sync
清理記憶體:建議在殺java進程後使用,先使用sync同步。
echo 3 > /proc/sys/vm/drop_caches
實際運行效果,機器正常跑2000執行緒正常,不卡,不慢,非常happy~
然後計算10萬用戶=10萬除以2000===50個機器~~~ 汗~~有點難申請。還要加5個調度機、、一共是55個機器~ 1個調度機帶10個執行機。
和大佬兇猛的溝通了一陣子~ 同意了。直接在阿里雲上複製已經調試好jmeter的執行機。刷刷刷刷~~~機器到手了。 反正阿里雲按量收費,用一天也沒多少錢。
如何降低非活躍連接數呢?
由於我設置的tcp連接超時周期為30秒,當我未對吞吐量進行限制時:發現非活躍連接數非常多。 這與生產環境不一致。(該測試結果圖片基於 1帶13執行機,用戶執行緒1500.當時的吞吐量為12000/s,大大超過實際的需求)
生產環境數據:
仔細琢磨計算了一下。生產10萬活躍用戶,才6200吞吐量,那麼。 2萬活躍用戶的吞吐量應該是===1300:
這裡發現一個關鍵指標: 新建並發連接數:生產環境高峰期也就1300,而我 6000+;所以,會出現大量的非活躍連接請求就很正常了。
解決辦法:使用jmeter定時器》》精準吞吐量計時器來對吞吐量進行限制。降低新建連接數,降低吞吐量。
通過計算:20000活躍用戶吞吐量1300,那麼jmeter腳本2000執行緒對於吞吐量是130/s。額好低。不忍直視。習慣了幾千幾千上萬的,吞吐量。最後發現只要設置130。
所以:這裡有一個結論,真真的性能大神測試時,都不是像我這樣的搞茫茫多機器去跑,一般也就設置100到200執行緒,進行伺服器性能測試。通過性能調優來優化伺服器。通過對測試結果日誌的分析,來找到伺服器問題的。
而不是像我這樣,去想著把伺服器搞掛,來複現問題…………
好了,設置好jmeter吞吐量,再進行一波測試。
非活躍連接數大大降低~~達到理想要求。 但還是比較多~ 新建請求連接數1690~ 超過高峰1300. 還需要慢慢優化~
腳本環境都調試完畢,以後,就開始加機器,測試吧~~~
待補充: 等測完了再來補充