Jmeter--常見問題及解決辦法


此文轉自微信公眾號:自動化性能測試

JMeter常見問題及解決方法

一、錄制不到以html結尾的請求

    在使用代理服務器錄制腳本的時候,可能會出現html結尾的請求錄制不到的問題。這是因為瀏覽器為了提升訪問速度,將這些請求獲取到的html資源作為靜態資源緩存在本地了,所以只要打開過一次主頁,接下來每次打開主頁時,都無需再發送這些請求。對於性能測試來說,主頁中這些html資源,是有必要反復進行壓測的。因此錄制腳本的時候,必須將這些請求錄制下來。

解決方法:

    只要每次錄制前,清空瀏覽器緩存就可以了。

(建議使用抓包方式做腳本)

二、響應數據中有亂碼

使用錄制下來的測試腳本進行測試的時候,查看結果樹,可能會出現響應數據中有亂碼。

解決方法:

1、找到安裝目錄/bin下面的jmeter.properties配置文件,如下:

2、打開jmeter.properties配置文件,找到“sampleresult.default.encoding”這個配置項,將原來的默認值“ISO-8859-1”修改為“utf-8”即可,修改后的配置如下所示:

3、重啟jmeter,重新執行測試。這時響應數據中就不會有亂碼了。

三、請求數據中有亂碼

設置HTTP請求,參數中的值顯示為中文,但系統接受數據時,中文顯示為亂碼;在“查看結果樹”中,查看HTTP請求,請求參數中的中文數據顯示亂碼。

解決方法:

       在HTTP請求頁面,Content encoding設置為utf-8即可。

四、JMeter內存OOM

       執行測試的時候,可能會出現OutOfMemoryError這樣的異常。JMeter是java實現的工具,內存是由java虛擬機JVM管理的。如果出現了內存溢出的問題,可能調整JVM內存相關的參數進行優化。

步驟如下:

1、在window下,找到jmeter.bat啟動腳本;

2、編輯jmeter.bat腳本,找到下面這些配置項。

3、參數調整

可以調大堆內存的大小:

將默認的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,執行測試,問題一般能得到解決。需要說明的是,參數的取值不能一概而論,也要根據大家電腦的硬件配置實際選取。

 

五、測試機配置不能滿足壓測要求

       Jmeter壓測過程中,由於測試機配置有限,CPU、內存都可能是存在瓶頸。如果使用很大的並發進行測試時,就可能會感到程序比較卡,這時候就無法繼續增加壓力了。

解決方法:

       搭建Jmeter分布式集群,遠程啟動測試。

步驟如下:

1、在分布式集群中,腳本編輯、控制的機器叫做“client”,實際運行Jmeter測試腳本,負責向被測服務器發請求的機器,稱為“server”。網絡要求

2、server和client需要網絡互通。找幾台機器作為 server,然后client和server相互ping彼此的ip地址,如果能ping通,說明網絡是ok的。

和client一樣,server可以是linux系統,也可以是windows系統。 client上安裝的JMeter版本最好和client保持一致。

在本文演示中,作為client機器,ip是172.31.132.242。

作為server機器,ip是172.17.3.212。

3、演示中,因為server是linux系統的,我們需要去官網下載linux系統對應的JMeter安裝文件,解壓即可。

進入安裝目錄:apache-JMeter-2.13/bin下,啟動server端程序,執行:./JMeter-server (windows下啟動JMeter-server.bat)

              如果server機器有多個ip,啟動的時候可以指定一個,如:

./JMeter-server-Djava.rmi.server.hostname=172.17.3.212

    配置和啟動client端安裝目錄的bin文件夾下,找到JMeter.properties文件,如下:

    打開文件,並找到remote_hosts=127.0.0.1這一行,修改為server服務器的列表,如下所示,如果server有多個,那么多個機器地址之間使用英文逗號分隔:

    其實,client自己可以同時作為一個server機器,向服務端發送請求(前提是client上也啟動了JMeter-server程序),所以也可以把client的ip加上,添加自己只需要寫127.0.0.1即可。本文的演示中,先不添加client自己,所以使用的是第一個配置。

    如果client有多個ip,也可以在啟動的時候指定一個。 如果是windows系統,可以修改jmeter.bat啟動腳本,在以下的命令最后,加上如下的配置,寫明client這台機器的ip地址即可。

修改完畢后保存,啟動Jmeter,打開界面。

執行分布式測試

    打開client端的JMeter界面,點擊運行-遠程啟動,里面能看到配置好的server端的機器列表。

       此時可以啟動一個遠程機器,也可以選擇下面的“遠程全部啟動”,同時啟動所有的server。點擊后,client端會自動和server端的服務建立連接,下發測試腳本到server端; 等server端的測試全部結束后,會將測試結果匯總到client端,我們在client端配置的監聽器就能看到測試結果了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM