『Jmeter超级干货』| Linux下Jmeter安装配置、脚本设计执行、监控及报告完整过程
注意:
1、之前写过一个是windows平台的,本文是Linux平台的;
2、另外需要注意的是,本文仅为示例过程,所以将客户端和服务器都用在同一台机器上。一般情况下不建议这么做,会影响性能结果的准确性。
1 JDK安装部署
1.1 JDK下载
- 安装地址:Java Downloads;
- 先查看自己的系统配置:
noamanelson@noamanelson-Virtual-Machine:~$ uname -a
Linux noamanelson-Virtual-Machine 6.2.0-36-generic #37~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Mon Oct 9 15:34:04 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
- 我的是
x86_64
,选对应的包即可:
1.2 JDK配置
- 将下载的包上传到服务器:
- 创建一个文件夹:
sudo mkdir /usr/local/java
- 把压缩包放到以上目录进行解压:
sudo tar -zxvf jdk-21_linux-x64_bin.tar.gz
- 解压后删除多余的其他安装包,解压后如下:
- 配置环境变量
sudo vim /etc/profile
,增加java
解压后的路径即可:
export JAVA_HOME=/usr/local/java/jdk-21.0.1
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
- 保存后,使配置文件生效(以下方法如果不行,建议重启电脑):
source /etc/profile
- 使用
java -version
查看安装是否ok
即可。
2 Jmeter安装部署
2.1 Jmeter下载
- 下载地址:Jmeter官网;
- 选择文件下载:
2.2 Jmeter安装
- 将下载的
Jmeter
上传到服务器: - 创建
Jmeter
目录:
mkdir jmeter_test
- 查看安装包的权限并赋予执行权限:
chmod +755 apache-jmeter-5.6.2.tgz
- 解压到当前目录下:
tar -zxvf apache-jmeter-5.6.2.tgz
2.3 Jmeter相关目录配置
- 解压后如下,即安装目录为:
# /home/noamanelson/jmeter_test/apache-jmeter-5.6.2
- 创建脚本存放目录
jmeter_scirpt
:
# /home/noamanelson/jmeter_test/jmeter_scirpt
mkdir jmeter_scirpt
- 创建报告存放目录
jmeter_report
:
# /home/noamanelson/jmeter_test/jmeter_report
mkdir jmeter_report
- 创建日志存放目录
jmeter_log
:
# /home/noamanelson/jmeter_test/jmeter_log
mkdir jmeter_log
- 创建结果存放目录
jmeter_result
:
# /home/noamanelson/jmeter_test/jmeter_result
mkdir jmeter_result
2.4 Jmeter启动配置
- 打开配置文件
sudo vim /etc/profile
,最后添加如下内容:
export JMETER_HOME=/home/noamanelson/jmeter_test/apache-jmeter-5.6.2
exportCLASSPATH=${JMETER_HOME}/lib/ext/ApacheJMeter_core.jar:${JMETER_HOME}/lib/jorphan.jar:${CLASSPATH}
export PATH=${JMETER_HOME}/bin:$PATH
- 使得配置文件生效(以下方法如果不行,建议重启电脑):
source /etc/profile
2.5 检查并启动
- 输入
jmeter -v
,如果出现以下内容,说明安装成功了:
noamanelson@noamanelson-Virtual-Machine:~$ jmeter -v
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
WARN StatusConsoleListener The use of package scanning to locate plugins is deprecated and will be removed in a future release
_ ____ _ ____ _ _ _____ _ __ __ _____ _____ _____ ____
/ \ | _ \ / \ / ___|||| ____||| \/| ____|_ _| ____| _ \
/ _ \ ||_)/ _ \||||_|| _| _ |||\/|| _|||| _|||_)|/ ___ \| __/ ___ \ |___| _ ||___ ||_||||||___ ||||___| _ </_/ \_\_|/_/ \_\____|_||_|_____| \___/|_||_|_____||_||_____|_| \_\ 5.6.2
Copyright (c)1999-2023 The Apache Software Foundation
- 输入
jmeter
启动即可:
3 Jmeter汉化
3.1 临时修改
- 即设置后只对本次使用有效,重启后恢复默认语言;
- 选择
Options—>Choose Language—>
选择语言(例如:Chinese(Simplified)
简体中文)设置成功。重启Jmeter
又会恢复英文;
3.2 永久修改
- 即永久性设置,设置后每次打开显示的语言都是一样的;
- 进入到
Jmeter
的bin
目录下,找到jmeter.properties
文档; - 打开查找
language
,找到language=en
的行如下图,将en
改为zh_CN
,并且去掉前面的#号,保存退出;
vim jmeter.properties
- 重启
jmeter
,语言设置成功。
4 准备测试对象
4.1 下载安装
- 禅道官网找到
Linux
一键安装包: - 点击下载后,使用
xftp
上传到ubuntu
上; - 把上传到
ubuntu
上的禅道安装包复制到/opt
目录下:
sudo cp ZenTaoPMS-18.8-zbox_amd64.tar.gz /opt/
- 将安装包直接解压到
/opt
目录下:
sudo tar -zxvf ZenTaoPMS-18.8-zbox_amd64.tar.gz
4.2 启动服务
- 禅道服务包括
Apache
和Mysql
,启动命令如下; - 启动所有服务:
/opt/zbox/zbox start
; - 停止所有服务:
/opt/zbox/zbox stop
; - 重启所有服务:
/opt/zbox/zbox restart
; - 开机自动启动:以把
/opt/zbox/zbox restart
加到操作系统的自启目录。
4.3 访问测试对象
- 禅道安装完并启动服务后,直接浏览器输入:
http://禅道服务器ip:apache端口。
特别注意:这里需要开放几个端口:
1、sudo ufw status
查看开放的端口:
2、开放需要的端口:sudo ufw allow
端口
4.4 注意事项
- 如果网页无法访问,请先关闭禅道所在电脑的防火墙和
selinux
再刷新网页访问试一下; - 使用云服务器请注意在安全组中开放
apache
使用端口; - 禅道默认管理员帐号是
admin
,密码123456
; - 初次登陆请修改密码:
4.5 其他参数
- 如果不加任何参数执行
/opt/zbox/zbox
会打印输出命令可用参数: Usage: ./zbox {start|stop|status} [--aport=8080] [--mport=3307]
–aport参数 可以修改Apache的端口
–mport参数 可以修改Mysql的端口
4.6 网页登录数据库
- 禅道数据库管理用的是
adminer
,但是为了安全,访问adminer
的时候需要身份验证,需要运行sudo /opt/zbox/auth/adduser.sh
来添加用户,如下命令:
# 进入脚本目录
cd /opt/zbox/auth
# 执行添加用户的脚本
bash adduser.sh
This tool is used to add user to access adminer
Account: admin # 输入用户名
Password:# 输入密码
Adding password for user admin
- 打开浏览器,输入
http://禅道服务的ip:apache
端口 点击“数据库管理”: - 输入用户名和密码:
- 网页直接显示登录界面:
1、系 统:默认选择MySQL。
2、服务器:127.0.0.1:MySQL端口
(MySQL端口启用的是3306,那么就填写127.0.0.1:3306。
注意:ip只能写127.0.0.1)
3、用户名:root(禅道默认的数据库用户名是root) 密 码:123456(禅道默认的数据库密码是123456) 数据库:zentao。
5 测试数据
- 将以下数据中的地址、用户名等参数改为自己的即可:
# 请求地址:
http://172.26.132.77:80/zentao/api.php/v1/tokens
# 请求方式:
POST
# 请求参数:{"account":"admin","password":"123456"}
6 测试目标
- 使用登陆接口,对登陆接口进行压测;
- 并发20,持续时间为5分钟。
7 脚本设计
7.1 添加http信息头管理器
测试计划-右键-添加-配置元件-HTTP信息头管理器
,如下:
7.2 添加http请求默认值
测试计划-右键-添加-配置元件-HTTP请求默认值
,如下:
7.3 添加线程组
测试计划-右键-添加-线程(用户)-线程组
,如下:
7.4 添加http请求
线程组-右键-添加-取样器-http请求
,如下:
7.5 添加查看结果树
测试计划-右键-添加-监听器-查看结果树
,如下:
7.6 运行调试
- 点击运行按钮,查看返回数据是否ok,如下:
8 安装jmeter-plugins-manager插件
8.1 jmeter-plugins-manager包配置
- 可以通过在
jmeter
客户端集成jmeter-plugins-manager
插件,在服务端部署插件serverAgent
来实时监控被压测服务器的性能; - 下载插件管理包:
- 放置到
jmeter
的安装目录lib\ext
下:
8.2 下载PerfMon插件并应用
- 重启
Jmeter
,点击选项-插件管理器: PerfMon(Servers Performance Monitoring)
选项,点击右下角的Apply Changes and Restart JMeter
按钮应用:- 安装完后如下:
8.3 添加PerfMon监听器
测试计划-右键-添加-监听器-jp@gc-PerfMon Metrics Collector,
如下:
9 服务端配置ServerAgent
9. 1下载ServerAgent
- 下载
ServerAgent-2.2.3.zip
,下载官网地址;
9.2配置ServerAgent
- 下载后上传到
linux
上,并解压:
sudo unzip ServerAgent-2.2.3.zi
- 进入到解压目录
ServerAgent-2.2.3
下,直接运行./startAgent.sh
启动;
特别注意:
1、默认启动端口为4444;
2、也可以使用命令指定端口启动(例如将指定TCP为5678,UDP指定为6789):./startAgent.sh --tcp-port 5678--udp-port 6789--sysinfo
;
3、建议将此脚本写成shell脚本,授权chmod -R 777 XXX
之后下次直接启动脚本程序。
4、如果提示无法连接到4444端口,需要开放4444端口:sudo ufw allow 4444
10 Jmeter配置监控指标
- 在
jp@gc-PerfMon Metrics Collector
上进行指标选择; - 点击
AddRow
,然后在host
的地方添加需要监控的服务器的主机域名或者IP,port
填写端口,Metric to collect
下拉选择监控的指标(CPU、Memory、Swap、Disks I/O、Network I/O
等):
11 GUI方式运行
- 直接运行脚本即可:
12 非GUI运行
- 性能测试时建议使用这种方式可以提升性能;
- 这种方法运行时将监控数据输出到指定文件,文件必修是
.jtl
结尾;
12.1 安装jmeter-plugins-cmd插件
- 在插件管理器中勾选如图即可:
12.2 命令行启动性能脚本
- 我们之前已经创建了脚本、报告等的存放路径:
# /home/noamanelson/jmeter_test/jmeter_scirpt # 脚本路径# /home/noamanelson/jmeter_test/jmeter_report # 报告路径# /home/noamanelson/jmeter_test/jmeter_log # 日志路径# /home/noamanelson/jmeter_test/jmeter_result # 结果路径
- 命令行执行脚本命令为:
jmeter -n -t 脚本路径 -l jtl数据文件路径 -e -o 测试报告存放路径
- 创建示例:
jmeter -n -t \
./jmeter_scirpt/test_login.jmx -l \
./jmeter_result/test_login.jtl -e -o \
./jmeter_report/
Creating summariser <summary>
Created the tree successfully using ./jmeter_scirpt/test_login.jmx
Starting standalone test @ 2023 Nov 3016:15:44 CST (1701332144880)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary +1133in00:00:15=76.4/s Avg:247 Min:62 Max:3045 Err:0(0.00%) Active:20 Started:20 Finished:0
summary +2442in00:00:30=81.7/s Avg:245 Min:108 Max:1383 Err:0(0.00%) Active:20 Started:20 Finished:0
summary =3575in00:00:45=80.0/s Avg:245 Min:62 Max:3045 Err:0(0.00%)
summary +2585in00:00:30=86.2/s Avg:231 Min:117 Max:616 Err:0(0.00%) Active:20 Started:20 Finished:0
summary =6160in00:01:15=82.4/s Avg:240 Min:62 Max:3045 Err:0(0.00%)
summary +2509in00:00:30=83.6/s Avg:238 Min:97 Max:1172 Err:0(0.00%) Active:20 Started:20 Finished:0
summary =8669in00:01:45=82.8/s Avg:239 Min:62 Max:3045 Err:0(0.00%)
summary +2644in00:00:30=88.0/s Avg:227 Min:92 Max:826 Err:0(0.00%) Active:20 Started:20 Finished:0
summary =11313in00:02:15=84.0/s Avg:236 Min:62 Max:3045 Err:0(0.00%)
summary +2606in00:00:30=87.0/s Avg:229 Min:101 Max:985 Err:0(0.00%) Active:20 Started:20 Finished:0
summary =13919in00:02:45=84.5/s Avg:235 Min:62 Max:3045 Err:0(0.00%)
summary +2656in00:00:30=88.5/s Avg:226 Min:110 Max:1042 Err:0(0.00%) Active:20 Started:20 Finished:0
summary =16575in00:03:15=85.1/s Avg:233 Min:62 Max:3045 Err:0(0.00%)
summary +2656in00:00:30=88.5/s Avg:225 Min:113 Max:1199 Err:0(0.00%) Active:20 Started:20 Finished:0
summary =19231in00:03:45=85.6/s Avg:232 Min:62 Max:3045 Err:0(0.00%)
summary +2724in00:00:30=90.8/s Avg:220 Min:108 Max:1299 Err:0(0.00%) Active:20 Started:20 Finished:0
summary =21955in00:04:15=86.2/s Avg:231 Min:62 Max:3045 Err:0(0.00%)
summary +2676in00:00:30=89.2/s Avg:223 Min:88 Max:1357 Err:0(0.00%) Active:20 Started:20 Finished:0
summary =24631in00:04:45=86.5/s Avg:230 Min:62 Max:3045 Err:0(0.00%)
summary +1407in00:00:16=90.6/s Avg:221 Min:127 Max:1441 Err:0(0.00%) Active:0 Started:20 Finished:20
summary =26038in00:05:00=86.7/s Avg:230 Min:62 Max:3045 Err:0(0.00%)
Tidying up ... @ 2023 Nov 3016:20:45 CST (1701332445534)... end of run
13 报告查看
- 打开报告存放路径,比如:
/home/noamanelson/jmeter_test/jmeter_report
14 命令行生成监控图片
- 新建存放图片的路径,比如
mkdir jmeter_picture
:
/home/noamanelson/jmeter_test/jmeter_picture
- 命令行先执行
JMeterPluginsCMD.sh
,看下这个命令有没有问题:
$ JMeterPluginsCMD.sh
Error: Unable to access jarfile /home/noamanelson/jmeter_test/apache-jmeter-5.6.2/bin/../lib/cmdrunner-2.2.jar
- 发现这个文件找不到,我们看下图片中的
/home/noamanelson/jmeter_test/apache-jmeter-5.6.2/bin/../lib/cmdrunner-2.2.jar
中的文件是否存在:
/home/noamanelson/jmeter_test/apache-jmeter-5.6.2/lib
- 结果发现是
cmdrunner-2.3.jar
而不是cmdrunner-2.2.jar
,则需要修改JMeterPluginsCMD.sh
文件; JMeterPluginsCMD.sh
文件在/home/noamanelson/jmeter_test/apache-jmeter-5.6.2/bin
目录下:- 修改为
cmdrunner-2.3.jar
: - 完整的执行命令如下:
JMeterPluginsCMD.sh --generate-png 存放图片的路径 --input-jtl jtl数据文件路径 --plugin-type PerfMon --width 图片宽度 --height 图片高度
- 示例如下:
JMeterPluginsCMD.sh \
--generate-png ./jmeter_picture/test_login.png \
--input-jtl ./jmeter_result/test_login.jtl \
--plugin-type PerfMon --width 800--height 600
15 命令行生成csv文件
- 创建
csv
文件存放路径,比如/home/noamanelson/jmeter_test/jmeter_csv
:
mkdir jmeter_csv
- 执行的命令为:
JMeterPluginsCMD.sh --tool Reporter --generate-csv 存放csv路径 --input-jtl 存放jtl数据文件路径 --plugin-type PerfMon
- 示例如下:
JMeterPluginsCMD.sh \
--tool Reporter \
--generate-csv ./jmeter_csv/test_login.csv \
--input-jtl ./jmeter_result/test_login.jtl \
--plugin-type PerfMon
- 生成后如下:
版权归原作者 虫无涯 所有, 如有侵权,请联系我们删除。