先說下問題:
我在做性能測試時,使用JMeter搞了100個並發,以100TPS的壓力壓測十分鍾,但壓力一直出現波動。並且出現波動時JMeter十分卡,例如以下圖:
周期性TPS波動
各種猜測:
所以開始找環境的各種原因,起初以為是JMeter的連接被“劫持”了,不然JMeter也不會卡的。所以,花了整整一下午時間。去排除壓測機環境、被壓測環境(TCP連接數、程序上的問題等等),但一直沒找到原因。
后來。換成LR后,壓測正常。所以開始懷疑是JMeter自身的問題。
原因找到:
后來想起來,我被測場景的腳本是老的腳本,也是在JMeter2.8上的。然后我如今用的JMeter是2.13,難道是腳本的兼容性問題?
問題解決:
各種替換。最后才定位到了是CSV Data Set Config的問題。僅僅要我用2.8的腳本上的CSV Data Set Config進行參數化,哪怕是這個參數我沒實用。一壓測就出現TPS波動;我禁用后,新建了一個CSV Data Set Config。全部數據保持不變,再次壓測,OK!
這個坑真大!希望Apache組織可以改動下,肯定是老版本號的CSV Data Set Config在新版本號的JMeter壓測時,調度存在問題,導致本地的壓力不穩定,並且關鍵的是,這個導致JMeter太卡了。
問題解決后的壓力例如以下:穩穩的,我要穩穩的幸福~
下圖非常穩定了。波動在3TPS范圍
還有其它坑:
PS:另外,再給大家補充個坑。就是JMeter插件的資源監控問題,將agent放到Linux上去監控資源,cpu和內存都沒什么問題。但假設你監控tcp的連接話,就要注意了,這個監控能夠吃掉15%左右cpu資源,4核單板的喔,並且是sys的cpu高非常多。
應該是這塊監控的算法不夠優化,占用了太多的資源。請各位JMeter使用者千萬注意咯!
By:Fresh.Qin