CentOS如何使用JMeter进行负载测试
导读:在 CentOS 上使用 JMeter 进行负载测试 一 环境准备 安装 Java 8(JMeter 5.x 建议使用 Java 8 或 11): 安装命令:sudo yum install -y java-1.8.0-openjdk-...
在 CentOS 上使用 JMeter 进行负载测试
一 环境准备
- 安装 Java 8(JMeter 5.x 建议使用 Java 8 或 11):
- 安装命令:
sudo yum install -y java-1.8.0-openjdk-devel - 验证:
java -version
- 安装命令:
- 创建专用用户(可选,提升安全性):
sudo useradd -m -s /bin/bash jmeter - 调整文件句柄限制(避免高并发时报 “Too many open files”):
- 临时:
ulimit -n 65535 - 永久:在
/etc/security/limits.conf增加jmeter soft nofile 65535 jmeter hard nofile 65535
- 临时:
- 上传脚本工具(可选):
sudo yum install -y lrzsz,使用rz上传.jmx脚本。
二 安装与验证 JMeter
- 下载并解压(以 5.4.3 为例,可按需替换为最新稳定版):
cd /opt sudo wget https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.tgz sudo tar -xzf apache-jmeter-5.4.3.tgz sudo ln -s apache-jmeter-5.4.3 jmeter - 配置环境变量(写入
/etc/profile或~/.bashrc):
使配置生效:export JMETER_HOME=/opt/jmeter export PATH=$JMETER_HOME/bin:$PATHsource /etc/profile - 验证安装:
jmeter -v(应输出版本号)
三 编写测试脚本
- 在本地 JMeter GUI 创建测试计划:
- 添加线程组:设置线程数(虚拟用户数)、Ramp-Up 时间、循环次数。
- 添加取样器:如 HTTP Request(协议、域名/IP、端口、路径、参数、请求头、Body 等)。
- 添加监听器:如 Summary Report、Aggregate Report、View Results Tree(调试用,压测建议关闭)。
- 保存为 test.jmx,上传到 CentOS(如使用
rz)。
四 执行测试与生成报告
- 非 GUI 命令行执行(推荐):
# 基本:生成 JTL 结果 jmeter -n -t /opt/scripts/test.jmx -l /opt/results/results.jtl # 生成 HTML 报告(压测结束后) jmeter -g /opt/results/results.jtl -o /opt/results/report # 一步到位:执行并直接生成 HTML 报告 jmeter -n -t /opt/scripts/test.jmx -l /opt/results/results.jtl -e -o /opt/results/report - 常用参数说明:
-n:非 GUI 模式-t:指定 .jmx 脚本-l:指定 .jtl 结果文件-e:测试结束后生成 HTML 报告-o:HTML 报告输出目录(必须为空)
- 报告查看:将
report/index.html下载到本地用浏览器打开,或在服务器上用python -m http.server 8080临时预览。
五 监控与分布式压测
- 服务器资源监控(压测同时观察瓶颈):
top/htop:CPU、内存vmstat 1:系统整体资源netstat -s或ss -s:网络连接与丢包- 目标服务自身日志与监控(如 Nginx、应用日志、数据库慢查询)
- 实时监控方案(可选):使用 InfluxDB + Grafana
- JMeter 添加 Backend Listener(如 InfluxdbBackendListenerClient),将指标写入 InfluxDB
- Grafana 配置 InfluxDB 数据源并导入 JMeter 仪表盘,实时查看 响应时间、吞吐量、错误率 等
- 分布式压测(可选,提升并发能力):
- 架构:一台 Master 控制多台 Slave
- 在 Master 的
jmeter.properties:remote_hosts=192.168.1.101:1099,192.168.1.102:1099 server.rmi.localport=1099 server.rmi.ssl.disable=true - 在各 Slave 启动:
/opt/jmeter/bin/jmeter-server - 执行:
jmeter -n -t test.jmx -R192.168.1.101:1099,192.168.1.102:1099 - 如启用防火墙,放行 1099/TCP:
sudo firewall-cmd --permanent --add-port=1099/tcp & & sudo firewall-cmd --reload
六 常见问题与优化建议
- 尽量使用非 GUI 模式压测;GUI 仅用于脚本编写与调试。
- 监听器选择:压测关闭 View Results Tree 与 Graph Results,仅保留 Summary/Aggregate Report 或写入 JTL,减少内存与 I/O 开销。
- 合理设置线程数、Ramp-Up、循环次数与超时;先做小并发试跑,再逐步加压。
- 避免测试数据污染:使用唯一标识、事务前清理/重置数据,或采用独立测试库。
- 结果分析关注:Average/Median/90%/95%/99% Line、Throughput、Error %,结合服务器资源指标定位瓶颈(CPU、内存、I/O、网络、数据库锁等)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS如何使用JMeter进行负载测试
本文地址: https://pptw.com/jishu/770676.html
