温馨提示×

jmeter在centos上的使用注意事项有哪些

小樊
34
2025-11-22 04:27:22
栏目: 智能运维

CentOS上使用 JMeter 的注意事项

一 环境与安装

  • 使用受支持的 Java 版本(建议 JDK 8),并在所有节点(Master/Slave)保持一致;安装后执行 java -version 校验。
  • 推荐将 JMeter 解压至 /opt,并通过 /etc/profile.d/jmeter.sh 设置环境变量,便于全局调用:
    • 示例:export JMETER_HOME=/opt/apache-jmeter-5.4.3;export PATH=$JMETER_HOME/bin:$PATH;执行 source /etc/profile.d/jmeter.sh
  • 生产压测避免使用 JMeter GUI,优先在 非GUI 模式执行:jmeter -n -t plan.jmx -l result.jtl -e -o report。
  • 如需容器化,可用 Docker 运行 JMeter,注意挂载脚本目录并控制容器资源。

二 分布式压测与网络

  • Master 与所有 Slave 需保持 版本一致(Java 与 JMeter),并处于 同一网络,可互相访问。
  • 在 jmeter.properties 中统一关键项:
    • 建议禁用 RMI SSL:server.rmi.ssl.disable=true(内网可控时)。
    • 设置 RMI 主机名:rmi.server.hostname=本机IP(避免主机名解析异常)。
    • 默认 RMI 端口:1099;必要时配置 server.rmi.localportclient.rmi.localport,避免端口冲突。
  • 启动与执行:Slave 上执行 jmeter-server;Master 上用 -R slave1:1099,slave2:1099 远程启动;命令行示例:
    • jmeter -n -t /path/plan.jmx -R 192.168.30.132:1099,192.168.30.130:1099 -l /path/result.jtl -e -o /path/report
  • 防火墙与安全组:开放 1099/TCP(RMI),以及实际用到的 server.rmi.localport/client.rmi.localport;最小化开放范围并使用白名单。

三 脚本与数据一致性

  • 参数化文件(如 CSV Data Set Config)需在 所有 Slave 上同名同路径 放置,且 内容一致(行数、列数、编码、分隔符),否则会出现数据错位或缺失。
  • 特殊协议注意:
    • TCP 取样器需正确设置客户端类,如文本用 org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl,二进制用 org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl;十六进制发送时务必设置 结束符,否则会一直等待响应。
  • 结果准确性:
    • 压测时禁用 View Results Tree 等重监听器,减少内存与 I/O 开销。
    • 使用 定时器 模拟真实用户思考时间,避免请求“洪泛”。
    • 优先使用 Groovy 替代 Beanshell(性能更好、可编译缓存)。
    • 尽量用 单个线程组 + 逻辑控制器 组织场景,减少不必要的并发复杂度。

四 性能与系统调优

  • JVM 堆与元空间:在 jmeter 或 jmeter.sh 中设置合适的堆,如 -Xms4g -Xmx4g -XX:MaxMetaspaceSize=512m;堆大小不宜超过物理内存的 2/3,避免 OOM 或 GC 抖动影响结果。
  • 文件句柄与进程数:提升系统可打开文件数与用户进程数,编辑 /etc/security/limits.conf
    • 示例:* soft/hard nofile 65536;* soft/hard nproc 65565
  • TCP/网络栈:优化端口范围与会话回收,编辑 /etc/sysctl.conf
    • 示例:net.ipv4.ip_local_port_range = 1024 65000;net.ipv4.tcp_tw_reuse = 1;net.ipv4.tcp_fin_timeout = 30;执行 sysctl -p 生效。
  • I/O 与调度:磁盘建议使用 SSD;必要时将 I/O 调度器调整为 deadline/noop(视存储类型而定)。
  • 监控与诊断:压测时配合 top/htop、vmstat、iostat 观察 CPU、内存、I/O 与网络;必要时使用 分布式压测 分摊压力。

五 日志输出与报告

  • 建议将结果输出为 CSV(便于落地与二次处理):在 jmeter.properties 中设置
    • jmeter.save.saveservice.output_format=csv
    • 可按需开启:response_data、response_headers、request_headers、url、timestamp_format 等字段。
  • HTML 报告:非GUI 执行时加 -e -o 输出目录 自动生成;若压测异常终止导致 result.jtl 不完整,生成报告可能报错(如 Mismatch between …),需保证结果文件完整后再生成。

0