我都知道.Properties
檔案一般都為配置檔案。我們可以通過在.Properties
檔案中定義的各類屬性來實現一些特定的配置。例如:語言型別的問題、cookie的問題、輸出日誌型別的問題、定義日誌級別的問題、編碼問題等等。
在JMeter的bin
目錄中,存在多個配置檔案(5.0版本):
jmeter.properties
reportgenerator.properties
saveservice.properties
system.properties
upgrade.properties
user.properties
其中最重要的配置檔案是jmeter.properties
,jmete.properties
是JMeter的核心配置項檔案,是JMeter-GUI
執行的配置說明檔案。
JMeter配置檔案官方文件:https://jmeter.apache.org/usermanual/properties_reference.html
下面對其常用的一些配置項,進行設定與說明。
1、預設語言設定
# language=en
language=zh_CN #簡體中文
功能:設定JMeter-GUI
介面的顯示語言。
說明:若沒有設定,則使用JVM(Java虛擬機器)設定的Locale語言。
擴充:在Linux中設定JVM的Locale語言:
# 檢視locale
[root@localhost ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
# 配置,內容編輯:LANG="zh_CN.UTF-8"
[root@localhost ~]# vi /etc/sysconfig/i18n
[root@localhost ~]# cat !$
cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
注意:此配置項只能在
jmeter.properties
檔案中設定才有效。
2、配置預設編碼格式
# sampleresult.default.encoding=ISO-8859-1
sampleresult.default.encoding=UTF-8
JMeter-GUI
預設編碼格式為ISO-8859-1
,防止中文亂碼可以改成UTF-8
編碼格式。
3、GUI圖示放大比例設定
JMeter-GUI
介面佈局的設定,當JMeter以GUI模式執行時,視窗主要由三部分構成:功能區
、檢視區
、內容區
。
如下圖:
GUI圖示放大比例設定:
jmeter.hidpi.mode=true #開啟視網膜模式
jmeter.hidpi.scale.factor=1.2 #將圖示放大1.2倍
4、功能區工具欄圖示大小設定
# 工具欄圖示預設size: 22x22
# 可用size選項: 22x22, 32x32, 48x48
jmeter.toolbar.icons.size=32x32
5、檢視區目錄樹圖示大小設定
# 目錄樹圖示預設size: 19x19
# 可用size選項: 19x19, 24x24, 32x32, 48x48
jmeter.tree.icons.size=24x24
6、內容區編輯字型設定
調整JMeter內容區的編輯字型:
# 預設Hack字型太難看,使用經典的consolas
# 這兩個配置項必須同時設定才有效
jsyntaxtextarea.font.family=consolas
jsyntaxtextarea.font.size=18
7、新增JMeter元素快捷鍵設定
jmeter.properties
配置檔案中,可以新增JMeter-GUI
使用時的快捷鍵,最多支援10個。
提示:
- 在Windows系統上可以使用
Ctrl+0
至Ctrl+9
。 - 在macOS系統上可以使用
Command+0
至Command+9
。
gui.quick_0=ThreadGroupGui #新增執行緒組
gui.quick_1=HttpTestSampleGui #新增HTTP取樣器
gui.quick_2=RegexExtractorGui #新增正規表示式提取器
gui.quick_3=AssertionGui #新增響應斷言
gui.quick_4=ConstantTimerGui #新增常量定時器
gui.quick_5=TestActionGui #新增測試活動
gui.quick_6=JSR223PostProcessor #新增JSR223 後置處理程式
gui.quick_7=JSR223PreProcessor #新增JSR223 預處理程式
gui.quick_8=DebugSampler #新增除錯取樣器
gui.quick_9=ViewResultsFullVisualizer #新增察看結果樹
8、捕捉cookie
將Cookie儲存為變數:
# CookieManager.save.cookies=false # 預設
CookieManager.save.cookies=true # 將cookie儲存為變數
9、HTTP Request Post Content-Type設定
在使用JMeter-GUI
傳送Post請求的時候,若不自己手動新增Content-Type
屬性內容,預設則不會新增Content-type
的相關資訊。
# Should JMeter add to POST request content-type header if missing:
# Content-Type: application/x-www-form-urlencoded
# Was true before version 5.0
post_add_content_type_if_missing=true
說明:
此配置項在JMeter5.0以前預設值為True,在5.0以及之後的版本預設值為False。
故在5.0以後的版本中傳送POST請求時,將引數放在
body data
(訊息體資料)中,且沒有設定Content-Type
時,預設會將Content-Type
的值設定為text/plain
,而不是application/x-www-form-urlencoded
。
通過檢視JMeter官方文件和自己的實操,我的理解是:
post_add_content_type_if_missing=true
配置項,在POST請求時,如果Content-Type
屬性缺失,會自動補全Content-Type: application/x-www-form-urlencoded
。
但是經過我的操作,發現配置了post_add_content_type_if_missing=true
,在body data
(訊息體資料)填寫了Json資料,傳送請求之後,Content-Type
的值依然為text/plain
,不知道該配置項是何用處。
所以在之後的實踐操作時,如果在body data
(訊息體資料)中填寫純文字資料時,還是要依照介面文件中的要求,手動新增一個HTTP資訊頭管理器(配置元件),裡面手動配置對應的Content-Type
值,這樣操作更為穩妥。
如果文件中沒有標註,可以按常見的媒體格式型別填寫,如下:
text/html
: HTML格式。text/plain
:純文字格式。text/xml
: XML格式。application/json
: JSON資料格式。image/jpeg
:jpg圖片格式。
(還有很多,可以自行擴充套件。)
10、配置遠端主機
我們需要找到remote_hosts
屬性,然後按照負載機ip地址:埠號
的形式進行配置。
可以配置多個遠端主機,中間用,
分隔開,注意全部為英文符號。
remote_hosts=127.0.0.1:8999
11、日誌級別設定
從JMeter3.2開始,日誌級別不再在jmeter.properties
中設定,而是通過log4j2.xml
配置檔案中,設定日誌級別。
<Root level="info">
<AppenderRef ref="jmeter-log" />
<AppenderRef ref="gui-log-event" />
</Root>
將level
的值改為對應的日誌級別,預設為info
,也可以在GUI介面臨時設定日誌級別。
log4j2
定義了8個級別的日誌,優先順序從高到低依次為:
OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL
。
OFF
:用於關閉所有日誌記錄。FATAL
:指出每個嚴重的錯誤事件將會導致應用程式的退出。ERROR
:指出雖然發生錯誤事件,但仍然不影響系統的繼續執行。WARN
:表明會出現潛在錯誤的情形。INFO
:訊息在粗粒度級別上突出強調應用程式的執行過程。DEBUG
:指出細粒度資訊事件對除錯應用程式是非常有幫助的。TRACE
:追蹤日誌。ALL
:用於開啟所有日誌記錄。
12、總結
官方建議:將需要修改的屬性值,複製貼上到同目錄下的user.properties
配置檔案中,而不要直接在jmeter.properties
配置檔案中編輯。
好處:當JMeter升級時,可以避免修改的選項需要重新應用。
jmeter.properties
配置檔案內容如下:
意思表示:JMeter自動載入其他配置檔案中的屬性。