使用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 指定输出报告路径。生成的报告可以通过浏览器查看,包含响应时间、吞吐量、错误率等图形化数据。
相关推荐
Lang_xi_2 小时前
Bash Shell的操作环境
linux·开发语言·bash
关关钧3 小时前
【Linux】sed编辑器
linux·运维·编辑器
哦豁灬3 小时前
linux查看硬件信息
linux·运维·服务器
m0_748252603 小时前
在Linux系统上使用nmcli命令配置各种网络(有线、无线、vlan、vxlan、路由、网桥等)
linux·服务器·网络
小白的登仙路4 小时前
进程间通讯
linux·c语言·进程间通讯
R-sz4 小时前
ubuntu切换到root用户
linux·运维·ubuntu
cmgdxrz4 小时前
性能测试05|JMeter:分布式、报告、并发数计算、性能监控
分布式·jmeter
OopspoO5 小时前
Linux 磁盘与文件系统操作
linux·运维·服务器
运维&陈同学5 小时前
【Logstash01】企业级日志分析系统ELK之Logstash 安装与介绍
大数据·linux·elk·elasticsearch·云原生·自动化·logstash
Danileaf_Guo6 小时前
没有图形界面,如何快速部署一个Ubuntu 24.10的Server虚拟机
linux·运维·服务器·ubuntu