使用JMeter对Linux生产服务器进行压力测试

安装 JMeter

bash 复制代码
wget https://downloads.apache.org/jmeter/binaries/apache-jmeter-5.4.1.tgz
tar -xzf apache-jmeter-5.4.1.tgz
cd apache-jmeter-5.4.1

创建 JMeter 脚本

  1. 设置中文

    选择Options--->Choose Language--->选择其他语言(例如:Chinese(Simplified)简体中文)设置成功。重启Jmeter又会恢复英文

  2. 创建测试计划

    • "File" ---> "New" ---> "Test Plan"
  3. 配置线程组

    右键点击"Test Plan",选择"Add" -> "Threads (Users)" -> "Thread Group"。

    • Number of Threads (users):线程数。100 个线程就是模拟 100 个用户。
    • Ramp-Up Period (in seconds):线程准备时长。如果线程数为 100,准备时长为 10,那么需要 1秒钟启动 10 个线程。
    • Loop Count:循环次数。如果线程数为 100,循环次数为 10,那么每个线程发送 10 次请求。总请求数为 100*10 = 1000。如果勾选了"Infinite",那么所有线程会一直发送请求,直到手动停止。
  4. 添加 HTTP 请求

    • 右键点击"Thread Group",选择"Add" -> "Sampler" -> "HTTP Request"。
    • 配置 HTTP 请求:
      • Server Name or IP: 你的 Linux 服务器的 IP 地址或域名
      • Port Number: 80 或 443(根据你的应用)
      • Path: /your-endpoint(你的测试端点)
      • Method: GET 或 POST(根据你的需求)


  5. 添加监听器

    • 右键点击"Thread Group",选择"Add" -> "Listener" -> "Summary Report"。
    • 这将帮助你汇总测试结果。
  6. 客户端安装jmeter-plugins-manager 插件

    将下载好的Jmeter-plugins-manager jar包放在jmeter包下的lib\ext文件夹下

    我们需要关注被压测服务器的cpu、内存、磁盘、网络等指标参数的浮动来衡量压测服务器的能力;

    可以通过在jmeter客户端集成jmeter-plugins-manager 插件,在服务端部署插件serverAgent来实时监控被压测服务器的性能;

  7. 下载PerfMon插件并应用

  8. 服务端配置ServerAgent
    下载

    bash 复制代码
    sudo unzip ServerAgent-2.2.3.zip
    # 运行
    ./startAgent.sh # 默认端口为4444
    ./startAgent.sh --tcp-port 5678--udp-port 6789--sysinfo # 指定端口
    # 客户端执行测试ServerAgent是否启动
    telnet 172.18.126.87 4444
  9. Jmeter配置监控指标 添加PerfMon监听器

    测试计划-右键-添加-监听器-jp@gc-PerfMon Metrics Collector,如下:

    点击AddRow,然后在host的地方添加需要监控的服务器的主机域名或者IP,port填写端口,Metric to collect下拉选择监控的指标(CPU、Memory、Swap、Disks I/O、Network I/O等)

  10. GUI方式运行

  11. 保存测试计划

    将测试计划保存为 test_plan.jmx

  12. 安装jmeter-plugins-cmd插件

  13. 非GUI运行

    • 创建报告存放路径,比如:D:\A_jmeter_test\report;
    • 创建压测数据存放路径,比如:D:\A_jmeter_test\jtl;
    • 脚本存放路径,比如:D:\A_jmeter_test\登陆.jmx;
    bash 复制代码
    jmeter -n -t 脚本路径 -l jtl数据文件路径 -e -o 测试报告存放路径
  14. 查看报告

    打开报告存放路径,比如:D:\A_jmeter_test\report


  15. 命令行生成监控图片

    新建存放图片的路径,比如D:\A_jmeter_test\picture;

    命令行先执行JMeterPluginsCMD.bat,看下这个命令有没有问题:

    发现这个文件找不到,我们看下图片中的D:\apache-jmeter-5.3\bin\...\lib\cmdrunner-2.2.jar中的文件是否存在:

    结果发现是cmdrunner-2.3.jar而不是cmdrunner-2.2.jar,则需要修改JMeterPluginsCMD.bat文件;

    而JMeterPluginsCMD.bat文件在D:\apache-jmeter-5.3\bin目录下:

    cmd 复制代码
    JMeterPluginsCMD.bat --generate-png 存放图片的路径 --input-jtl jtl数据文件路径 --plugin-type PerfMon --width 图片宽度 --height 图片高度
    
    JMeterPluginsCMD.bat --generate-png D:\A_jmeter_test\picture\登陆.png --input-jtl D:\A_jmeter_test\jtl\登陆.jtl --plugin-type PerfMon --width 800 --height 600

    生成的图片如下

  16. 命令行生成csv文件

    创建csv文件存放路径,比如:D:\A_jmeter_test\csv;

    执行的命令为:

    bash 复制代码
    JMeterPluginsCMD.bat --tool Reporter --generate-csv 存放csv路径 --input-jtl 存放jtl数据文件路径 --plugin-type PerfMon
    
    JMeterPluginsCMD.bat --tool Reporter --generate-csv D:\A_jmeter_test\csv\登陆.csv --input-jtl D:\A_jmeter_test\jtl\登陆.jtl --plugin-type PerfMon



编写 Shell 脚本

run_jmeter_test.sh

bash 复制代码
#!/bin/bash

# JMeter 安装路径
JMETER_HOME="/path/to/apache-jmeter-5.4.1"

# 测试计划文件路径
TEST_PLAN="${JMETER_HOME}/test_plan.jmx"

# 结果输出文件路径
RESULT_FILE="${JMETER_HOME}/test_results.jtl"

# 运行 JMeter 命令
${JMETER_HOME}/bin/jmeter -n -t ${TEST_PLAN} -l ${RESULT_FILE}

# 分析结果
${JMETER_HOME}/bin/jmeter -g ${RESULT_FILE} -o ${JMETER_HOME}/report

# 打开报告目录
xdg-open ${JMETER_HOME}/report/index.html
  • JMETER_HOME:JMeter 的安装路径。
  • TEST_PLAN:测试计划文件的路径。
  • RESULT_FILE:测试结果文件的路径。
  • ${JMETER_HOME}/bin/jmeter -n -t ${TEST_PLAN} -l ${RESULT_FILE}:以非 GUI 模式运行 JMeter 测试,并将结果保存到指定文件。
  • ${JMETER_HOME}/bin/jmeter -g ${RESULT_FILE} -o ${JMETER_HOME}/report:生成 HTML 报告。
  • xdg-open ${JMETER_HOME}/report/index.html:在默认浏览器中打开报告。
bash 复制代码
# 赋予脚本执行权限
chmod +x run_jmeter_test.sh
# 运行脚本
./run_jmeter_test.sh

  • 非 GUI 模式执行测试

    bash 复制代码
    jmeter -n -t test_plan.jmx -l test_result.jtl
    • n:非 GUI 模式
    • t:指定测试脚本文件
    • l:指定结果输出文件
  • 生成报告

    bash 复制代码
    jmeter -g test_result.jtl -o /path/to/output/report
    • g 指定输入文件(测试结果),o 指定输出报告路径。生成的报告可以通过浏览器查看,包含响应时间、吞吐量、错误率等图形化数据。
相关推荐
FoldWinCard1 小时前
D5 Linux 网络及端口命令
linux·运维·服务器
零涂毕业设计2 小时前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
tedcloud1233 小时前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
霸道流氓气质3 小时前
KMS 密钥管理服务(Key Management Service)原理与实践
linux·服务器·数据库
SakitamaX3 小时前
LVS(Linux Virtual Server)概念详解
linux·运维·lvs
小张同学a.3 小时前
Linux系统管理
linux·运维
阿龙的工作记录4 小时前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
代码村新手4 小时前
Linux的基本指令
linux·运维·服务器
hkj88084 小时前
Ubuntu 切换java版本
java·linux·ubuntu
撩得Android一次心动6 小时前
Linux编程笔记3【个人用】
linux·笔记