温馨提示×

如何利用JMeter对CentOS进行压力测试

小樊
37
2026-01-04 09:25:24
栏目: 智能运维

在CentOS上使用JMeter进行压力测试

一 环境准备

  • 安装 Java 8(JMeter 5.x 要求 Java 8+):执行命令 sudo yum install -y java-1.8.0-openjdk-devel,完成后用 java -version 验证。
  • 下载并解压 Apache 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
  • 配置环境变量(写入 /etc/profile~/.bashrc):
    • export JMETER_HOME=/usr/local/apache-jmeter-5.4.3
    • export PATH=$JMETER_HOME/bin:$PATH
      使配置生效:source /etc/profilesource ~/.bashrc,用 jmeter -v 验证安装。

二 快速开始 非GUI压测

  • 在本地 Windows GUI 中设计测试计划(如线程组、HTTP 请求、断言、聚合报告等),保存为 .jmx
  • .jmx 与参数化 CSV 上传到 CentOS(可用 rzscp)。
  • 在 CentOS 执行非GUI压测并生成报告:
    • 基本命令:./jmeter -n -t /path/test.jmx -l /path/result.jtl
    • 生成 HTML 报告:./jmeter -n -t /path/test.jmx -l /path/result.jtl -e -o /path/report
  • result.jtlreport/ 下载回本地,用 JMeter GUI 的“聚合报告/Summary Report”查看结果。

三 控制吞吐与关键指标

  • 控制吞吐:添加 Constant Throughput Timer,设置 Target throughput(in samples per minute)。例如要达成 100 QPS,目标值填 6000(60×100)。
  • 常用监听器与指标:
    • 聚合报告字段:Label、Samples、Average、Median、90% Line、95% Line、99% Line、Min、Max、Error %、Throughput、Received KB/sec、Sent KB/sec
    • 实时监控可配合 jp@gc 图形监听器(如 Response Times Over Time、Transactions per Second)。

四 分布式压测 Master Slave

  • 准备多台 CentOS 机器,保持 JDK 与 JMeter 版本一致
  • 在所有 Agent 上:
    • 编辑 jmeter.propertiesserver.rmi.ssl.disable=true
    • 启动服务:nohup $JMETER_HOME/bin/jmeter-server -Djava.rmi.server.hostname=<AGENT_IP> &
  • Controller 上:
    • 编辑 jmeter.propertiesremote_hosts=<AGENT1_IP>:1099,<AGENT2_IP>:1099
    • 执行压测:./jmeter -n -t /path/test.jmx -l /path/result.jtl -R <AGENT1_IP>:1099,<AGENT2_IP>:1099
  • 参数化文件(CSV)需在 所有 Agent 上保持相同路径与文件名,脚本中使用 绝对路径

五 常见问题与监控建议

  • 环境与内存:JMeter 是 Java 应用,在 jmeter 脚本或 jmeter.sh 中设置 JVM_ARGS=“-Xms1g -Xmx1g”(按机器内存调整);用 jmeter -vps/top 检查进程与资源。
  • 防火墙与 RMI:分布式压测需开放 1099 端口,或在 jmeter.properties 中关闭 SSLserver.rmi.ssl.disable=true
  • 结果分析:.jtlCSV 格式,可用本地 JMeter 打开“聚合报告”;如需实时监控,可将结果写入 InfluxDB 并用 Grafana 展示。
  • 监控项:关注被压服务的 CPU、JVM 内存/GC、延迟分布,以及中间件(如 Nginx、Redis、MySQL)的 连接数、慢查询 等。

0