是基于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监控
  • 登录被测服务器,执行监控脚本:
    cd /opt/nmon
    ./nmon_monitor.sh
    (记录Nmon进程ID,方便测试结束后停止:ps -ef | grep nmon
步骤2:执行JMeter测试(通过Ant)
  • 在本地JMeter脚本目录,执行Ant命令:
    ant report  # 自动执行测试并生成HTML报告
    • 执行逻辑:init(创建目录)→ run(执行JMeter脚本)→ report(生成报告)。
步骤3:停止Nmon监控
  • 测试结束后,终止Nmon进程:
    kill -9 <Nmon进程ID>
    (Nmon结果文件自动保存至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瓶颈)。

五、自动化优化(可选)

  1. 定时执行:结合Windows任务计划或Linux Crontab,定时触发Ant命令和Nmon监控。
  2. 邮件通知:在build.xml中添加邮件任务,测试结束后自动发送报告(需配置SMTP)。
  3. 结果归档:通过Ant脚本将测试结果按日期归档(如results/20251028/)。

六、注意事项

  1. 版本兼容:JMeter与Ant版本需匹配(如JMeter 5.x兼容Ant 1.10.x)。
  2. 资源隔离:测试时避免其他进程占用被测服务器资源,确保数据准确性。
  3. Nmon采集频率:根据测试时长调整-s(间隔秒数)和-c(次数),避免数据量过大。
  4. 权限问题:Nmon需有服务器资源访问权限,Ant需有JMeter脚本和结果目录的读写权限。

通过以上步骤,可实现从测试执行、服务器监控到结果分析的全流程自动化,高效定位系统性能瓶颈。