上一篇宏哥已经介绍了如何在 Linux 系统中安装 Jmeter,想必各位小伙伴都已经在 Linux 服务器或者虚拟机上已经实践并且都已经成功安装好了,那么今天宏哥就来介绍一下如何在 Linux 系统下运行 Jmeter 脚本。
你要在 Linux 系统中运行 Jmeter 脚本首先要有 Jmeter。在 Windows 系统中启动 jmeter,创建 Jmeter 测试脚本,这里宏哥以访问我博客首页为例
1.启动 Jmeter 后,添加线程组,如下图所示:

2.选中 “线程组”,添加取样器 “HTTP 请求”,如下图所示:

3.选中 “HTTP 请求”,添加监听器 “察看结果树”,如下图所示:

4.点击保存按钮,脚本保存为 test.jmx,运行脚本进行调试直到调试成功,如下图所示:

5.将线程组修改成 100,然后保存,将文件上传至 linux 服务器。
1.在 Linux 服务器的 usr 目录下创建一个 test 文件夹,如下图所示:

2.将在 Windows 调试好的基本上传到此文件夹中,如下图所示:

3.将脚本上传至 linux 服务器,然后就在当前的 test 目录下,输入命令 jmeter -n -t test.jmx -l log.jtl ,运行 jmeter 脚本。运行结果,如下图所示:

4.将脚本上传至 linux 服务器,或者进入 jmeter 的 bin 目录下,输入命令 jmeter -n -t /usr/test/test.jmx -l /usr/test/log.jtl ,运行 jmeter 脚本。运行结果,如下图所示:

PS:常用命令解析:
# 常见命令说明
-h 帮助:打印出有用的信息并退出
-n 非 GUI 模式:在非 GUI 模式下运行 JMeter
-t 测试文件:要运行的 JMeter 测试脚本文件
-l 日志文件:记录结果的文件
-r 远程执行:启动远程服务
-H 代理主机:设置 JMeter 使用的代理主机
-P 代理端口:设置 JMeter 使用的代理主机的端口号
5.跑完之后,在 test 目录下,生成两个文件:一个是 jmeter.log(jmeter 运行日志),一个是我们的性能结果文件 (log.jtl),我们用命令把 log.jtl 文件导入 windows 系统就能查看结果了,如下图所示:

1.在 windows 上启动 jmeter,添加所需的监听器,导入脚本运行产生的 log.jtl 文件,查看测试结果,(注:察看结果树的请求内无信息,后边宏哥会给出解决方案),如下图所示:

从上图可以看出:宏哥前边线程组设置的是 100,这里的聚合报告的样本也是 100,说明没有问题,运行的是宏哥上传的脚本。
以上,即为在 linux 环境中运行 jmeter 脚本进行压测,并生成测试报告的的过程,具体操作,请自行实践,本文仅供参考。。。
1.在 windows 上启动 jmeter,添加察看结果树监听器,导入脚本运行产生的 log.jtl 文件,查看测试结果,发现察看结果树的请求内无信息。如下图所示:

2.解决 linux 下运行 jmeter 脚本,导出的 jtl 文件,用结果树查看无请求信息问题,解决方法:在 linux 的 jmeter 安装目录下 bin/user.properties 加入如下参数:
jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true
3.修改好以后,重新运行脚本,重新导入 log.jtl 文件查看测试的察看结果树,可以看到请求信息。如下图所示:

1.察看结果树,有请求信息了,但是查看响应信息看到中文乱码了,如下图所示:

2.解决 linux 下运行 jmeter 脚本,导出的 jtl 文件,用结果树查看查看响应信息看到中文乱码了。解决办法:
修改 bin 目录下的 user.properties 文件,追加配置:
jmeter.save.saveservice.encoding=true
另外:JMeter 结果树响应数据中文乱码解决办法:
encoding 编码,打开 apache-jmeter-5.4\bin\jmeter.properties 文件,搜索 “encoding” 关键字,找到如下配置:
#The encoding to be used if none is provided (default ISO-8859-1)
#sampleresult.default.encoding=ISO-8859-1
将注释删掉,并改成 utf-8 编码,即:
sampleresult.default.encoding=utf-8
重启 JMeter 即可。
3.修改好以后,重新运行脚本,重新导入 log.jtl 文件查看测试的察看结果树,可以看到响应信息没有中文乱码了。如下图所示:

1.jmeter 为了减轻客户机负担,没有默认把这些信息(请求信息)保存,如果想要保存,也可以,需要做一下前边的配置即可。性能测试建议还是不要开这些配置,会增加报告的大小。
从生产的日志文件大小就可以看出确实是增加了客户机的负担,如下图所示:

2.修改完 jmeter 的配置文件信息,如果没有作用,记得要使用命令 source /etc/profile 运行后,再次尝试一下。
3.细心的小伙伴或者童鞋们会发现宏哥在登录 Linux 服务器的时候不是同一个用户,最前边是 admin,后边又是 root。这是因为宏哥之前用 admin 的时候,权限没有 root 的大,在运行脚本时,报错如下: main ERROR FileManager (jmeter.log) java.io.FileNotFoundException: jmeter.log (Permission denied) java.io.FileNotFoundException: jmeter.log (Permission denied) 报了一个权限错误。一时间没有找到解决办法就切换到 root 用户了,然后就成功运行了脚本。后来宏哥觉得是 jmeter 启动的日志文件写入不了 test 的文件夹中,于是就给文件夹赋予了最大权限,如下图所示:

再次运行 jmeter 脚本运行成功了,如下图所示:

4.要注意:
jmeter.log文件和结果文件,如果没有指定生成路径的话。会在执行 JMeter 命令的当前目录中生成。(这点要注意一下)