温馨提示×

如何利用JMeter进行CentOS负载测试

小樊
41
2025-12-07 21:48:22
栏目: 智能运维

在CentOS上使用JMeter进行负载测试

一 环境准备与安装

  • 安装 Java(推荐 OpenJDK 8):
    • 命令:sudo yum install -y java-1.8.0-openjdk-devel
    • 验证: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/
    • 配置环境变量(写入 /etc/profile~/.bashrc):
      • export JMETER_HOME=/usr/local/apache-jmeter-5.4.3
      • export PATH=$JMETER_HOME/bin:$PATH
    • 使配置生效:source /etc/profile
    • 验证:jmeter -v
  • 上传脚本(如无 GUI,可用 lrzsz):
    • 安装:sudo yum install -y lrzsz
    • 上传:rz,选择本地的 .jmx 脚本

二 编写与执行测试

  • 脚本准备:在本地 JMeter GUI 中创建测试计划(如 线程组、HTTP 请求、断言、监听器),保存为 test.jmx,再上传至 CentOS。
  • 非 GUI 执行(推荐):
    • 基本命令:jmeter -n -t /path/to/test.jmx -l /path/to/results.jtl
    • 常用参数:
      • -n 非 GUI 模式
      • -t 指定 .jmx 脚本
      • -l 指定结果文件 .jtl
      • -e -o /path/to/report 测试结束后直接生成 HTML 报告
  • 示例(50 并发、10 秒 ramp-up、循环 100 次):
    • 线程组:线程数 50,Ramp-Up 10 秒,循环 100
    • HTTP 请求:配置协议、域名/IP、端口、路径、方法、请求头/体
    • 命令行:jmeter -n -t test.jmx -l result.jtl -e -o report

三 结果分析与可视化

  • 本地查看:将 results.jtl 下载到本地 JMeter,使用聚合报告图形结果等监听器分析。
  • 服务器生成 HTML 报告:在 CentOS 上直接执行
    • jmeter -g /path/to/results.jtl -o /path/to/report
    • 报告目录中的 index.html 可用浏览器打开查看。

四 分布式压测与负载均衡测试

  • 适用场景:单机并发能力不足、需要模拟更大规模用户或验证负载均衡效果时。
  • 基本架构:一台 Master(控制机) 多台 Slave(工作机),所有节点 JMeter 版本保持一致(如 5.6.3)。
  • 配置步骤:
    • 在所有节点安装相同版本 JMeter 并配置环境变量
    • Master 的 jmeter.properties 中设置:remote_hosts=192.168.1.158,192.168.1.159
    • 可选(简化 RMI):server.rmi.localport=1099server.rmi.ssl.disable=true
    • 各 Slave 启动服务:在 JMeter 的 bin 目录执行 ./jmeter-server(或 jmeter-server,视版本而定)
    • Master 发起测试:jmeter -n -t test.jmx -l result.jtl -R 192.168.1.158,192.168.1.159
  • 说明:分布式压测本质上是通过多台压力机产生更高并发,从而更真实地评估系统在负载均衡架构下的表现。

五 性能与稳定性调优建议

  • JMeter JVM 调优:编辑 bin/jmeterjmeter.sh,设置堆大小(如 -Xms2g -Xmx8g,不超过物理内存的 2/3),避免 OOM 或频繁 GC 影响结果。
  • 系统资源与网络:
    • 提高文件句柄数:编辑 /etc/security/limits.conf,设置 * soft/hard nofile 65536* soft/hard nproc 65565,并执行 ulimit -n 102400 临时生效
    • TCP/端口与内核参数:如 net.ipv4.ip_local_port_range=1024 65000net.ipv4.tcp_tw_reuse=1net.ipv4.tcp_fin_timeout=30,执行 sysctl -p 生效
  • 被测端(如 Nginx):适当提升 worker_connectionskeepalive_timeout 等以应对高并发连接
  • 运行规范:压测时尽量使用非 GUI模式,避免额外资源占用影响数据准确性。

0