温馨提示×

如何用JMeter进行CentOS应用性能测试

小樊
45
2025-12-21 17:59:02
栏目: 智能运维

在 CentOS 上使用 JMeter 进行应用性能测试

一 环境准备与安装

  • 安装 Java(JMeter 5.x 需 Java 8+):执行 sudo yum install -y java-1.8.0-openjdk-devel,然后 java -version 验证。
  • 安装 JMeter(推荐手动解压,便于多版本管理):
    • 下载 Apache JMeter 二进制包(如 apache-jmeter-5.4.3.tgz),上传至 /opt
    • 解压:tar -xzf apache-jmeter-5.4.3.tgz -C /opt/,建议创建软链:ln -s /opt/apache-jmeter-5.4.3 /opt/jmeter
  • 配置环境变量(写入 /etc/profilesource /etc/profile):
    • export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    • export JMETER_HOME=/opt/jmeter
    • export PATH=$JMETER_HOME/bin:$PATH
  • 验证:jmeter -v 应输出版本号。
  • 可选:安装插件管理器(放到 $JMETER_HOME/lib/ext),便于后续扩展图形与监控能力。

二 测试计划设计与本地调试

  • 在本地 GUI 创建测试计划:
    • 添加 Thread Group(设置线程数、Ramp-Up、循环次数)。
    • 添加 HTTP Request(协议、主机、端口、路径、参数、Header、Body、上传文件等)。
    • 添加 CSV Data Set Config(参数化)、HTTP Header ManagerCookie ManagerAssertionsTimers(如 Constant Timer/Uniform Random Timer)等。
    • 添加监听器:Summary Report、Aggregate Report、View Results Tree(仅调试用)。
  • 调试通过后保存为 .jmx,上传至 CentOS 压测机(如 /opt/jmeter/script/test.jmx)。

三 在 CentOS 上执行压测与生成报告

  • 非 GUI 执行(推荐,资源占用更低):
    • 基本:jmeter -n -t /opt/jmeter/script/test.jmx -l /opt/jmeter/results/test.jtl
    • 直接生成 HTML 报告:jmeter -n -t /opt/jmeter/script/test.jmx -l /opt/jmeter/results/test.jtl -e -o /opt/jmeter/results/report
  • 常用参数:
    • -n 非 GUI;-t 指定 .jmx-l 指定 .jtl 结果;-e 生成报告;-o 报告输出目录(必须为空)。
  • 报告查看:
    • .jtl 下载到本地 JMeter,添加 Aggregate Report/Summary Report 查看 响应时间、吞吐量、错误率 等。
    • 或直接使用 -e -o 在 CentOS 生成 HTML 报告后下载查看。

四 提升吞吐的系统与 JMeter 调优

  • JMeter JVM 调优(编辑 $JMETER_HOME/bin/jmeterjmeter.sh 中的 JVM_ARGS):
    • 堆大小示例:-Xms2g -Xmx8g(不超过物理内存的约 2/3),并配置元空间:-XX:MaxMetaspaceSize=512m
  • 文件句柄与进程数(提升并发连接能力):
    • 临时:ulimit -n 102400
    • 永久:在 /etc/security/limits.conf 增加
      • * soft nofile 65536* hard nofile 65536
      • * soft nproc 65565* hard nproc 65565
  • TCP/IP 与端口复用(编辑 /etc/sysctl.confsysctl -p):
    • net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_fin_timeout = 30
    • net.ipv4.ip_local_port_range = 1024 65000
  • 被测端 Web 服务器(如 Nginx)建议:
    • worker_connections 64000keepalive_timeout 60s(结合实例规格与业务调优)。
  • JMeter HTTP 客户端:
    • jmeter.properties 设置 httpclient4.idletimeout=10000(毫秒),避免长空闲导致连接异常。

五 分布式压测与实时监控

  • 分布式压测(多台压力机):
    • JMeter 主节点创建测试计划并保存 .jmx;在 从节点启动 jmeter-server,确保与主节点网络互通与一致的 JMeter 版本/插件。
    • 启动命令示例:主节点 jmeter -n -t test.jmx -R 192.168.1.11,192.168.1.12 -l test.jtl -e -o report(使用 -R 指定远程从机)。
  • 实时监控(可选):
    • 使用 InfluxDB + Grafana 搭建实时监控看板,将 JMeter 测试结果写入 InfluxDB,在 Grafana 中展示 响应时间、吞吐量、并发数 等曲线,便于定位瓶颈。

0