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

安装 JMeter

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
    下载

    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;
    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目录下:
    在这里插入图片描述

    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;
    执行的命令为:

    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

#!/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:在默认浏览器中打开报告。
# 赋予脚本执行权限
chmod +x run_jmeter_test.sh
# 运行脚本
./run_jmeter_test.sh

  • 非 GUI 模式执行测试

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

    jmeter -g test_result.jtl -o /path/to/output/report
    
    • g 指定输入文件(测试结果),o 指定输出报告路径。生成的报告可以通过浏览器查看,包含响应时间、吞吐量、错误率等图形化数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/946423.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Web安全】文件写入漏洞 ASP 网页病毒模拟(文件写入漏洞+FilesystemObject)

【Web安全】文件写入漏洞 ASP 网页病毒模拟(文件写入漏洞FilesystemObject) 原理 文件写入漏洞 文件写入漏洞是指攻击者通过某种方式在服务器上创建或修改文件的漏洞。攻击者可以利用此漏洞在服务器上写入恶意代码或文件,从而实现进一步的…

微信小程序调用 WebAssembly 烹饪指南

我们都是在夜里崩溃过的俗人,所幸终会天亮。明天就是新的开始,我们会变得与昨天不同。 一、Rust 导出 wasm 参考 wasm-bindgen 官方指南 https://wasm.rust-lang.net.cn/wasm-bindgen/introduction.html wasm-bindgen,这是一个 Rust 库和 CLI…

整合版canal ha搭建--基于1.1.4版本

开启MySql Binlog(1)修改MySql配置文件(2)重启MySql服务,查看配置是否生效(3)配置起效果后,创建canal用户,并赋予权限安装canal-admin(1)解压 canal.admin-1…

药片(药丸)和胶囊识别数据集,使用yolo,pasical voc xml, coco json格式标注,可识别药片和胶囊两种标签,2445张原始图片

药片(药丸)和胶囊识别数据集,使用yolo,pasical voc xml, coco json格式标注,可识别药片和胶囊两种标签,2445张原始图片 数据集分割 训练组80% 1967图片 有效集13% 317图片 测试集7% 161图片 预处…

C 语言:注释的重要性及用法详解

目录 一、注释的作用 二、C 语言中的注释类型 三、注释的实践 四、注释的注意事项 五、总结 在 C 语言编程中,注释是一种非常重要的工具,它可以帮助程序员更好地理解代码、提高代码的可读性和可维护性。本文将详细介绍 C 语言中注释的用法和重要性。…

麒麟信安云在长沙某银行的应用入选“云建设与应用领航计划(2024)”,打造湖湘金融云化升级优质范本

12月26日,2024云计算产业和标准应用大会在北京成功召开。大会汇集政产学研用各方专家学者,共同探讨云计算产业发展方向和未来机遇,展示云计算标准化工作重要成果。 会上,云建设与应用领航计划(2024)建云用…

LeetCode - 初级算法 数组(存在重复元素)

存在重复元素 这篇文章讨论如何判断一个数组中是否存在重复元素。 免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 描述 给定一个整数数组 nums,如果任一值在数组中出现至少两次,返回 true;如果数组中每个元素互不相同,返回 false。 示例: 输入: nums =…

C++笔记之尾后迭代器

C笔记之尾后迭代器 code review! 参考笔记 1.C笔记之尾后迭代器 2.C笔记之迭代器失效问题处理 在C中,尾后迭代器(通常称为 past-the-end iterator)是指指向容器中最后一个元素之后的位置的迭代器。它并不指向任何有效的元素,而是…

Gibbs现象(Gibbs Phenomenon)最初数学上的定义

Gibbs现象(Gibbs Phenomenon)是在处理周期性信号的傅里叶级数展开时出现的一种现象。当一个周期函数在不连续点附近被其傅里叶级数的部分和近似时,近似值会在不连续点处产生过冲(overshoot)和欠冲(undersho…

【时时三省】(C语言基础)动态内存函数realloc

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 realloc realloc函数的出现让动态内存管理更加灵活。 有时会我们发现过去申请的空间太小了,有时候我们又会觉得申请的空间过大了,那为了合理的时候内存,…

pycharm+anaconda创建项目

pycharmanaconda创建项目 安装: Windows下PythonPyCharm的安装步骤及PyCharm的使用-CSDN博客 详细Anaconda安装配置环境创建教程-CSDN博客 创建项目: 开始尝试新建一个项目吧! 选择好项目建设的文件夹 我的项目命名为:pyth…

ActiveMQ支持哪些传输协议

ActiveMQ 支持多种传输协议,以满足不同场景下的需求。这些协议包括但不限于以下几种: 1. OpenWire: • 这是 ActiveMQ 的默认和专有协议。 • 提供了高效、可靠的消息传递功能。 • 支持多种消息传递模式,如点对点和发布/订阅。 2…

Spring SpEL表达式由浅入深

标题 前言概述功能使用字面值对象属性和方法变量引用#this 和 #root变量获取类的类型调用对象(类)的方法调用类构造器类型转换运算符赋值运算符条件(关系)表达式三元表达式Elvis 操作符逻辑运算instanceof 和 正则表达式的匹配操作符 安全导航操作员数组集合(Array 、List、Map…

STM32裸机开发转FreeRTOS教程

目录 1. 简介2. RTOS设置(1)分配内存(2)查看任务剩余空间(3)使用osDelay 3. 队列的使用(1)创建队列(1)直接传值和指针传值(2)发送/接收…

第9章图9.15-9.21-《分析模式》原图和UML图对比

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集

提升口语发音水平,中英文发音评测系统实现

在全球化的浪潮中,语言不再是障碍,而是连接世界的桥梁。掌握一门流利的英语,意味着打开了通往世界的大门。但是,如何确保你的英语口语如同母语者一样自然流畅?这正是我们存在的意义。 我们的中英文口语发音评测服务&a…

C语言初阶习题【20】扫雷游戏

1.用C语言实现扫雷游戏 本博客和三子棋游戏比较大的区别是,三子棋游戏是写完了再总结的,本博客是边代码实现边编辑博客,所以本博客会比较详细的po出每一步骤,在每实现一个小功能的时候我们都先验证下效果,再继续下一步…

Python AI教程之七:多项式回归

多项式回归的实现 多项式回归是一种线性回归,其中独立变量 x 和因变量 y 之间的关系被建模为n 次多项式。多项式回归拟合 x 的值与 y 的相应条件均值之间的非线性关系,表示为 E(y | x)。在本文中,我们将深入探讨多项式回归。 目录 什么是多项式回归? 为什么采用多项式回归…

【Leetcode】3280. 将日期转换为二进制表示

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 给你一个字符串 date,它的格式为 yyyy-mm-dd,表示一个公历日期。 date 可以重写为二进制表示,只需要将年、月、日分别转换为对应的二进制表示&a…