jmeter在centos上的使用注意事项有哪些
小樊
36
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.localport 与 client.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 …),需保证结果文件完整后再生成。