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

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

JMeter常見問題及解決方法java

1、錄製不到以html結尾的請求

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

解決方法:apache

    只要每次錄製前,清空瀏覽器緩存就能夠了。windows

(建議使用抓包方式作腳本)瀏覽器

2、響應數據中有亂碼

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

解決方法:服務器

一、找到安裝目錄/bin下面的jmeter.properties配置文件,以下:微信

二、打開jmeter.properties配置文件,找到「sampleresult.default.encoding」這個配置項,將原來的默認值「ISO-8859-1」修改成「utf-8」便可,修改後的配置以下所示:網絡

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

3、請求數據中有亂碼

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

解決方法:

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

4、JMeter內存OOM

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

步驟以下:

一、在window下,找到jmeter.bat啓動腳本;

二、編輯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、測試機配置不能知足壓測要求

       Jmeter壓測過程當中,因爲測試機配置有限,CPU、內存均可能是存在瓶頸。若是使用很大的併發進行測試時,就可能會感到程序比較卡,這時候就沒法繼續增長壓力了。

解決方法:

       搭建Jmeter分佈式集羣,遠程啓動測試。

步驟以下:

一、在分佈式集羣中,腳本編輯、控制的機器叫作「client」,實際運行Jmeter測試腳本,負責向被測服務器發請求的機器,稱爲「server」。網絡要求

二、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。

三、演示中,由於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端配置的監聽器就能看到測試結果了。

相關文章
相關標籤/搜索