此文轉自微信公衆號:自動化性能測試html
JMeter常見問題及解決方法java
在使用代理服務器錄製腳本的時候,可能會出現html結尾的請求錄製不到的問題。這是由於瀏覽器爲了提高訪問速度,將這些請求獲取到的html資源做爲靜態資源緩存在本地了,因此只要打開過一次主頁,接下來每次打開主頁時,都無需再發送這些請求。對於性能測試來講,主頁中這些html資源,是有必要反覆進行壓測的。所以錄製腳本的時候,必須將這些請求錄製下來。linux
解決方法:apache
只要每次錄製前,清空瀏覽器緩存就能夠了。windows
(建議使用抓包方式作腳本)瀏覽器
使用錄製下來的測試腳本進行測試的時候,查看結果樹,可能會出現響應數據中有亂碼。緩存
解決方法:服務器
一、找到安裝目錄/bin下面的jmeter.properties配置文件,以下:微信
二、打開jmeter.properties配置文件,找到「sampleresult.default.encoding」這個配置項,將原來的默認值「ISO-8859-1」修改成「utf-8」便可,修改後的配置以下所示:網絡
三、重啓jmeter,從新執行測試。這時響應數據中就不會有亂碼了。
設置HTTP請求,參數中的值顯示爲中文,但系統接受數據時,中文顯示爲亂碼;在「查看結果樹」中,查看HTTP請求,請求參數中的中文數據顯示亂碼。
解決方法:
在HTTP請求頁面,Content encoding設置爲utf-8便可。
執行測試的時候,可能會出現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,執行測試,問題通常能獲得解決。須要說明的是,參數的取值不能一律而論,也要根據你們電腦的硬件配置實際選取。
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端配置的監聽器就能看到測試結果了。