Jmeter壓力測試Groovy腳本導致內存洩漏問題解決

Jmeter中Post Http請求時Body Data 中requestkey由於長度限制需要截取部分時間戳

採用groovy腳本截取寫法:

{“playerId”:”${playerId}”,”token”:”${token}”,”requestKey”:”${prefixId}${__groovy(‘${__time(,)}’.substring(3))}”,”clientStatus”:0}

將ThreadGroup.num_threads設置為300跑壓力測試程序時,通過監測發現執行壓測腳本的服務器內存消耗很快。JVM堆內存和Metaspace持續增長,很快達到設定最大值報內存溢出錯誤。通過Java VisualVM 分析看到Jmeter中創建了大量org.codehaus.groovy.runtime.metaclass.MetaMethodIndex$Entry等相關類實例,定位到groovy腳本導致了jmeter運行過程中產生內存洩漏。

將groovy腳本替換成Jmeter擴展插件jpgc-functions中支持的寫法如下:

{“playerId”:”${playerId}”,”token”:”${token}”,”requestKey”:”${prefixId}${__substring(‘${__time(,)}’,4,14)}”,”clientStatus”:0}

再次執行壓力測試內存洩漏問題解決。


分享到:


相關文章: