性能测试工具 Jmeter(五十四) - 从入门到精通高级篇 - 如何在 linux 系统下运行 jmeter 脚本 - 上篇(详解教程)

北京-宏哥 · November 11, 2025 · 165 hits

1.简介

上一篇宏哥已经介绍了如何在 Linux 系统中安装 Jmeter,想必各位小伙伴都已经在 Linux 服务器或者虚拟机上已经实践并且都已经成功安装好了,那么今天宏哥就来介绍一下如何在 Linux 系统下运行 Jmeter 脚本。

2.具体步骤

2.1 创建 Jmeter 测试脚本

你要在 Linux 系统中运行 Jmeter 脚本首先要有 Jmeter。在 Windows 系统中启动 jmeter,创建 Jmeter 测试脚本,这里宏哥以访问我博客首页为例

1.启动 Jmeter 后,添加线程组,如下图所示:

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

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

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

5.将线程组修改成 100,然后保存,将文件上传至 linux 服务器。

2.2 运行脚本

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 系统就能查看结果了,如下图所示:

2.3 查看测试报告

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

从上图可以看出:宏哥前边线程组设置的是 100,这里的聚合报告的样本也是 100,说明没有问题,运行的是宏哥上传的脚本。

以上,即为在 linux 环境中运行 jmeter 脚本进行压测,并生成测试报告的的过程,具体操作,请自行实践,本文仅供参考。。。

2.4 解决结果树查看无请求信息

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 文件查看测试的察看结果树,可以看到请求信息。如下图所示:

2.5 解决中文乱码

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 文件查看测试的察看结果树,可以看到响应信息没有中文乱码了。如下图所示:

3.小结

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 脚本所在的当前目录中执行命令,需要填写脚本文件的全路径。
  • 还有就是运行脚本所产生的jmeter.log文件和结果文件,如果没有指定生成路径的话。会在执行 JMeter 命令的当前目录中生成。(这点要注意一下)
No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up