1. 程式人生 > >jmeter-常見問題及解決方法

jmeter-常見問題及解決方法

clas 以及 eight width 數據包 端口 文本 view 錄制

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-常見問題及解決方法