使用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 指定输出报告路径。生成的报告可以通过浏览器查看,包含响应时间、吞吐量、错误率等图形化数据。
相关推荐
IC 见路不走1 小时前
LeetCode 第91题:解码方法
linux·运维·服务器
翻滚吧键盘1 小时前
查看linux中steam游戏的兼容性
linux·运维·游戏
小能喵2 小时前
Kali Linux Wifi 伪造热点
linux·安全·kali·kali linux
汀沿河2 小时前
8.1 prefix Tunning与Prompt Tunning模型微调方法
linux·运维·服务器·人工智能
zly35002 小时前
centos7 ping127.0.0.1不通
linux·运维·服务器
小哥山水之间3 小时前
基于dropbear实现嵌入式系统ssh服务端与客户端完整交互
linux
ldj20203 小时前
2025 Centos 安装PostgreSQL
linux·postgresql·centos
翻滚吧键盘3 小时前
opensuse tumbleweed上安装显卡驱动
linux
cui_win4 小时前
【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
linux·网络·tcp/ip
CodeWithMe7 小时前
【Note】《深入理解Linux内核》 Chapter 15 :深入理解 Linux 页缓存
linux·spring·缓存