jmeter-常見問題及解決方法
1、獲取日誌
在使用jmeter過程中,如果想獲得更詳細的日誌,可以修改jmeter\bin\jmeter.properties文件中的一個屬性:所有log_level.jmeter的後綴由info改為debug,如下:
2、jmeter安裝
安裝使用jmeter時候不需要設置classpath以及class變量,只需要默認安裝好JDK即可(通常情況下),然後解壓jmeter安裝包,啟動jmeter\bin\jmeter.bat程序即可;
因為jmeter是以Java_jar的方式啟動,而且會忽略該變量,這對所有Java程序都適用。
3、請求/響應數據顯示亂碼
有時候在發送請求/查看響應數據時,服務端接收到的請求中包含亂碼,導致無法解析報錯,解決方法有如下幾種:
①請求數據顯示亂碼,可以在請求中如下設置:
②返回數據包含亂碼時,可以修改jmeter\bin\jmeter.properties文件中的一個屬性:將encoding=後面的編碼格式改為utf-8,如下:
PS:此模塊更詳細的原因說明,可參考這篇博客:http://blog.csdn.net/cakushin7433/article/details/53039566
4、內存OOM(OutOfMemoryError:內存溢出)
在執行壓力測試時候,有時候會遇到OutOfMemoryError這樣的異常;JMeter是一個純Java開發的工具,內存是由java虛擬機JVM管理;如果出現了內存溢出的問題,
可以通過調整JVM內存相關的參數進行優化。
具體過程如下:
①找到jmeter.bat文件,也就是我們啟動jmeter的腳本:
②打開jmeter.bat文件,對一下這些配置項進行編輯:
③參數調整:
調整堆內存的大小:
將默認的set HEAP=-Xms512m -Xmx512m,調整為set HEAP=-Xms1024m -Xmx1024m;
調整堆內存中新生帶的大小:
將默認的set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m,調整為set NEW=-XX:NewSize=256m -XX:MaxNewSize=256m;
調整堆內存中永久帶的大小:
將默認的set PERM=-XX:PermSize=64m -XX:MaxPermSize=128m,調整為set PERM=-XX:PermSize=128m -XX:MaxPermSize=256m;
調整後重啟jmeter,問題一般可以得到解決(參數的調整不能一概而論,具體根據測試機的硬件配置來決定)。
5、Listener使用技巧
listener作為一個收集sampler的結果數據和呈現結果的文件,其本身會在每次sampler運行完成後執行一次,即一個test plan中的listener數量越多,運行時listener本身帶來的資源消耗
就越大(尤其是view results in table以及view results tree等)。
因此實際執行test plan時,應首先禁用不需要的listener,再開始執行;更好的方式是每次運行時將生成的結果寫入結果文件中,方便以後用不同的listener展現保存的結果數據。
當然,在並發量較大的情況下,一般的測試機限於配置等因素,無法支撐較大的並發數,可以用以下的方法來進行測試,方法如下:
去掉listener,為sampler添加斷言(一般是響應斷言),根據斷言結果來判斷請求是否成功,測試報告以plugins插件中的報告形式或文本形式寫入文件中來提升測試效率。
PS:這個方法是我認識的一個妹子她之前說的一種方法,感興趣的可以去看看她的博客,鏈接:http://www.cnblogs.com/sunshine2016/
6、調試test plan
很多測試人員在初始進行性能測試時,腳本都是錄制得到的,但錄制的腳本一般都包含很多對本次測試來說無用的sampler,以及錄制的sampler需要重新修改參數等內容,才能使用。
所以調試test plan就很有必要,常用的有以下2種方法:
①使用listener觀察sampler的請求和相應
錄制的腳本,一般都需要剔除無用的sampler,然後修改參數,進行調試,才能用於測試執行,一般用於調試的listener是結果樹,可以在測試計劃中將線程組的數量修改為1,然後執行。
listener顯示的每一個sampler結果為綠色(表示通過),但jmeter僅根據http返回碼來判斷sampler執行是否成功,這樣無法判斷sampler語義上的錯誤;因此,一般都是在sampler
中插入對應的檢查點(Assertion:斷言),根據返回的內容,來判斷sampler是否真正成功。
②使用http Mirror server觀察sampler發出的請求
在調試和修改sampler時,經常會為其增加一些額外的設置,例如額外的信息頭、cookie管理器等,但設置完成後直接運行腳本進行測試,並不能保證請求真的和我們預期的一致。
如果不想將請求發送給被測應用,可以使用http mirror server組件(http鏡像服務器)。
http mirror server可以啟動一個鏡像服務器,其可以把所有接收到的請求原封不動的返回,這樣就可以查看發出的請求的具體內容。
使用方法如下:
點擊工作臺,右鍵添加→http mirror server,如有必要修改服務器端口(一般修改為localhost:8080,方便調試),然後啟動鏡像服務器;
其次修改需要調試的sampler,將其請求發送到mirror server啟動的端口,運行測試計劃,即可以從listener中查看響應數據。
PS:其實http mirror server更大的作用是檢查瀏覽器是否發送了特殊的http頭,啟動mirror server,使用瀏覽器訪問該server,則可以在返回頁面看到瀏覽器發送請求的完整內容。
jmeter-常見問題及解決方法