是基于JMeter+Ant+Nmon的性能测试完整落地方案,涵盖环境准备、脚本开发、监控配置、自动化执行及结果分析全流程,步骤详细可落地:
一、环境准备
1. 基础工具安装
| 工具 | 作用 | 安装要求 |
|---|---|---|
| JMeter | 性能测试脚本开发与执行 | 安装Java(JDK 8+),配置JAVA_HOME;解压JMeter,配置JMETER_HOME环境变量 |
| Ant | 自动化构建工具(调度JMeter) | 解压Ant,配置ANT_HOME,并将ANT_HOME/bin加入系统PATH |
| Nmon | 服务器性能监控(CPU/内存等) | 下载对应服务器架构的Nmon(如Linux x86_64),赋予执行权限(chmod +x nmon) |
| 插件 | JMeter结果可视化 | JMeter安装HTML Reporting Dashboard插件(默认已包含);Ant需ant-jmeter.jar(放Ant的lib目录) |
2. 环境验证
- 验证JMeter:
jmeter -v显示版本信息 - 验证Ant:
ant -version显示版本信息 - 验证Nmon:服务器执行
./nmon -h显示帮助信息
二、核心配置
1. JMeter配置
- 结果文件格式:测试计划中,添加“CSV数据文件设置”(如需参数化)和“聚合报告”“Summary Report”,设置结果文件输出路径(如
${jmeter.result.dir}/result.jtl)。 - 报告模板:确认JMeter的
bin目录下有report-template文件夹(用于生成HTML报告)。
2. Ant配置(build.xml)
创建build.xml文件(放在JMeter脚本目录),示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="JMeterTest" default="run" basedir=".">
<!-- 配置路径 -->
<property name="jmeter.home" value="D:\apache-jmeter-5.6" /> <!-- JMeter安装目录 -->
<property name="jmeter.result.dir" value="${basedir}/results" /> <!-- 结果存放目录 -->
<property name="jmeter.script" value="${basedir}/testPlan.jmx" /> <!-- JMeter脚本路径 -->
<property name="report.name" value="TestReport" /> <!-- 报告名称 -->
<!-- 创建结果目录 -->
<target name="init">
<mkdir dir="${jmeter.result.dir}" />
</target>
<!-- 执行JMeter测试 -->
<target name="run" depends="init">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.dir}/result.jtl">
<testplans dir="${basedir}" includes="${jmeter.script}" />
<property name="jmeter.save.saveservice.output_format" value="xml" /> <!-- 结果格式为xml -->
</jmeter>
</target>
<!-- 生成HTML报告 -->
<target name="report" depends="run">
<exec executable="${jmeter.home}/bin/jmeter.bat"> <!-- Linux用jmeter.sh -->
<arg value="-g" />
<arg value="${jmeter.result.dir}/result.jtl" />
<arg value="-o" />
<arg value="${jmeter.result.dir}/${report.name}" />
</exec>
</target>
</project>
3. Nmon监控配置
- 监控脚本:在服务器创建
nmon_monitor.sh,用于启动Nmon并定时采集数据:#!/bin/bash NMON_PATH="./nmon" # Nmon执行文件路径 OUTPUT_DIR="./nmon_results" TIMESTAMP=$(date +%Y%m%d_%H%M%S) mkdir -p $OUTPUT_DIR # 每10秒采集一次,持续3600秒(1小时),输出文件格式:服务器IP_时间.nmon $NMON_PATH -f -t -r ${HOSTNAME}_${TIMESTAMP} -s 10 -c 360 > $OUTPUT_DIR/nmon_${TIMESTAMP}.log 2>&1 & - 赋予权限:
chmod +x nmon_monitor.sh
三、测试执行流程
1. 准备阶段
- 脚本开发:用JMeter录制或编写测试脚本(
testPlan.jmx),包含线程组、取样器、断言、监听器等,调试通过。 - 服务器部署:将Nmon和
nmon_monitor.sh上传至被测服务器(如/opt/nmon目录)。
2. 执行步骤
步骤1:启动Nmon监控
- 登录被测服务器,执行监控脚本:
(记录Nmon进程ID,方便测试结束后停止:cd /opt/nmon ./nmon_monitor.shps -ef | grep nmon)
步骤2:执行JMeter测试(通过Ant)
- 在本地JMeter脚本目录,执行Ant命令:
ant report # 自动执行测试并生成HTML报告- 执行逻辑:
init(创建目录)→run(执行JMeter脚本)→report(生成报告)。
- 执行逻辑:
步骤3:停止Nmon监控
- 测试结束后,终止Nmon进程:
(Nmon结果文件自动保存至kill -9 <Nmon进程ID>nmon_results目录,格式为.nmon)
四、结果分析
1. JMeter结果分析
- HTML报告:查看
results/TestReport目录下的index.html,重点关注:- 响应时间(Average、90% Line)、吞吐量(Throughput)、错误率(Error%)。
- 图表分析:响应时间趋势图、吞吐量趋势图、响应时间分布等。
2. Nmon结果分析
- 转换格式:将
.nmon文件转换为CSV(需在Windows安装Nmon Analyzer工具):- 打开
nmon_analyzer_v66.xlsm,启用宏,导入.nmon文件,生成多sheet的Excel报告。
- 打开
- 关键指标:
- CPU:用户态/系统态占比、空闲率(是否存在瓶颈)。
- 内存:使用率、swap交换量(是否内存泄漏)。
- 磁盘I/O:读写速率、繁忙率(是否磁盘瓶颈)。
- 网络:带宽使用率、包量(是否网络瓶颈)。
3. 关联分析
- 对比JMeter的响应时间峰值与Nmon的资源峰值时间点,定位瓶颈(如CPU飙升时响应时间延长→CPU瓶颈)。
五、自动化优化(可选)
- 定时执行:结合Windows任务计划或Linux Crontab,定时触发Ant命令和Nmon监控。
- 邮件通知:在
build.xml中添加邮件任务,测试结束后自动发送报告(需配置SMTP)。 - 结果归档:通过Ant脚本将测试结果按日期归档(如
results/20251028/)。
六、注意事项
- 版本兼容:JMeter与Ant版本需匹配(如JMeter 5.x兼容Ant 1.10.x)。
- 资源隔离:测试时避免其他进程占用被测服务器资源,确保数据准确性。
- Nmon采集频率:根据测试时长调整
-s(间隔秒数)和-c(次数),避免数据量过大。 - 权限问题:Nmon需有服务器资源访问权限,Ant需有JMeter脚本和结果目录的读写权限。
通过以上步骤,可实现从测试执行、服务器监控到结果分析的全流程自动化,高效定位系统性能瓶颈。
浙公网安备 33010602011771号