『动善时』JMeter基础 — 7、jmeter.properties文件常用配置
我都知道.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自动加载其他配置文件中的属性。