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