如何利用JMeter进行CentOS压力测试
导读:在CentOS上使用JMeter进行压力测试 一 环境准备与安装 安装 Java 8(JMeter 5.x 要求 Java 8+): 执行:sudo yum install -y java-1.8.0-openjdk-devel 配置环...
在CentOS上使用JMeter进行压力测试
一 环境准备与安装
- 安装 Java 8(JMeter 5.x 要求 Java 8+):
- 执行:
sudo yum install -y java-1.8.0-openjdk-devel - 配置环境变量(写入 /etc/profile):
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdkexport PATH=$JAVA_HOME/bin:$PATH
- 使配置生效:
source /etc/profile - 验证:
java -version
- 执行:
- 安装 JMeter(以 5.4.3 为例):
- 下载:
wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz - 解压:
tar -zxvf apache-jmeter-5.4.3.tgz -C /usr/local/ - 配置环境变量(写入 ~/.bashrc 或 /etc/profile):
export JMETER_HOME=/usr/local/apache-jmeter-5.4.3export PATH=$JMETER_HOME/bin:$PATH
- 使配置生效:
source ~/.bashrc - 验证:
jmeter -v
- 下载:
- 上传脚本与数据文件(可选):
- 安装 lrzsz:
yum install -y lrzsz - 上传:
rz,下载:sz < 文件>。
- 安装 lrzsz:
二 编写与执行测试
- 脚本编写建议:在 Windows 的 JMeter GUI 中创建测试计划(如 test.jmx),包含线程组、HTTP 请求、CSV Data Set Config(如有参数化)、以及必要的断言与监听器,保存后将 .jmx 上传至 CentOS。
- 非 GUI 执行(推荐):
- 基本命令:
jmeter -n -t /path/to/test.jmx -l /path/to/results.jtl- 参数说明:
-n非 GUI;-t指定脚本;-l指定结果文件(JTL/CSV)。
- 生成 HTML 报告(压测结束后):
jmeter -g /path/to/results.jtl -o /path/to/report- 报告目录中的 index.html 可用浏览器查看。
- 常用增强参数(按需添加):
-e -o < 报告目录>:压测完成后直接生成 HTML 报告-J< 变量名> =< 值>:覆盖测试计划中的用户定义变量(本地属性)-G< 变量名> =< 值>:设置远程属性(分布式/远程执行时使用)-R< host1:1099,host2:1099>:指定远程压力机(替代在 jmeter.properties 中配置 remote_hosts)。
- 基本命令:
三 分布式压测
- 架构说明:一台 Master/Controller 控制多台 Slave/Agent 发压,统一汇总结果。
- 配置步骤:
- 在所有 Agent 上启动服务:
cd $JMETER_HOME/bin- 建议:
nohup ./jmeter-server -Djava.rmi.server.hostname=< 本机IP> &
- 在 Master 的 jmeter.properties 中配置:
remote_hosts=< agent1_ip> :1099,< agent2_ip> :1099server.rmi.localport=1099server.rmi.ssl.disable=true(如无 SSL 需求)
- 在 Master 执行(两种方式任选其一):
- 使用配置文件中的 remote_hosts:
jmeter -n -t test.jmx -l results.jtl -e -o report - 命令行指定远程机:
-R< agent1_ip> :1099,< agent2_ip> :1099
- 使用配置文件中的 remote_hosts:
- 在所有 Agent 上启动服务:
- 防火墙:开放 1099/TCP(RMI)以及可能的端口段,例如:
sudo firewall-cmd --permanent --add-port=1099/tcpsudo firewall-cmd --reload
- 运行特性:多台 Agent 的 TPS 近似为总和,平均响应时间为各 Agent 的平均值(用于横向扩容估算)。
四 结果分析与监控
- 本地分析:
- 将 .jtl 下载到本地,在 JMeter GUI 的 聚合报告/Summary Report 中查看 Throughput(TPS)、Average、95%/99% Line、Error % 等关键指标;或使用
jmeter -g生成 HTML 报告 便于分享与归档。
- 将 .jtl 下载到本地,在 JMeter GUI 的 聚合报告/Summary Report 中查看 Throughput(TPS)、Average、95%/99% Line、Error % 等关键指标;或使用
- 实时监控(可选方案):
- 使用 InfluxDB + Grafana 搭建实时可视化看板:JMeter 写入指标至 InfluxDB(HTTP 8086 端口),Grafana 从 InfluxDB 查询并展示曲线(适合长时间压测与容量评估)。
五 性能与安全注意事项
- 运行模式:压测务必使用 非 GUI 模式,GUI 仅用于脚本开发与调试;必要时通过
-J/-G参数化线程数、Ramp-Up、循环次数等,便于不同场景快速复用脚本。 - JVM 与系统调优(示例原则):
- 在 $JMETER_HOME/bin/jmeter 或启动脚本中调整堆内存(如
-Xms/-Xmx),一般不超过物理内存的 2/3;结合压测并发与机器规格合理设置。 - 提升系统承载能力:调高 文件描述符/套接字 限制(如
ulimit -n)、优化 网络/内核参数、以及被压测端(如 Nginx/应用服务器)的最大连接数与超时配置,避免瓶颈出现在压测机或被压测服务侧。
- 在 $JMETER_HOME/bin/jmeter 或启动脚本中调整堆内存(如
- 网络与合规:
- 建议在 内网 执行压测,避免对公网/生产链路造成干扰;压测前完成 变更报备 与 目标系统容量评估,压测后及时 清理与回滚 临时配置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何利用JMeter进行CentOS压力测试
本文地址: https://pptw.com/jishu/756496.html
