利用Jmeter工具对服务器,数据库进行性能监控,压测,导出性能测试报告

news2024/9/21 10:52:14

  Jmeter是Apache基金会旗下的一款免费,开源,轻量级的性能测试工具,主要针对web应用程序客户端/服务器进行性能测试.它可以分别测试静态、动态资源(Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等),它可以通过线程组来模拟数个用户,在一段时间内同时登录服务器,数个用户并发对数据库进行访问,从而测试出服务器,数据库在一定负载情况下的性能状况

  Jmeter是基于Java语言开发的,所以它的运行依赖于Jre环境,在运行之前首先要下载jdk(最好下载8,太低的话会导致无法启动).配置好环境变量后,下载Jmeter(下载地址 Apache JMeter - Download Apache JMeter ),截止发文前最高版本为5.4.3,我这里使用3.0演示.

Jmeter文件(下载地址(链接:https://pan.baidu.com/s/1Rr3ZQ8gaawBRPUctkuWBxw 
提取码:1304,有效期30天)(JMeterPlugins-Extras.jar,JMeterPlugins-Standard.jar这两个包是针对客户端安装的.ServerAgent-是针对服务器端的)


1. Jmeter本身并没有提供对服务器CPU,Memory,Disks I/O等进行监控的功能,所以我们通过它的插件来完成. 上面文件下载后,把JMeterPlugins-Extras.jar,JMeterPlugins-Standard.jar两个包放到Jmeter安装目录下的\lib\ext下,然后去bin目录下双击 jmeter.bat文件运行. 右击 测试计划>>Add>>Threads(Users),当发现有jp@gc-开头的选项时即表示插件安装成功

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic546L5Zyj56We6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

 2. 右击 测试计划>>Add>>Threads(Users)>>Thread Group,添加线程组.右键 Thread group>>Add>>Sampler>>HTTP Request 添加Http请求,这里不设置参数值.而后 右键HTTP Request>>Add>>Listener>>jp@gc-PerfMon Metrics Collector.添加服务器端监控

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic546L5Zyj56We6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

 3. 这样客户端就配置好了,接下来配置服务端,连接工具连接服务器,把ServerAgent-2.2.3.zip上传到服务器,解压,把压缩包删除.进入ServerAgent-2.2.3下, 用命令 chmod 777 startAgent.sh 赋予其全部权限. ./startAgent.sh 运行.出现以下提示,即代表运行成功.(ServerAgent默认使用4444端口)

13aca8a0f9ff4770acff0d53b400c61c.png

 如果出现  Can't accept UDP connections等错误提示, 可能是你的4444端口被占用了,用命令 lsof -i:4444检测, 如果有程序占用,用 kill -9 pid  把它杀掉,再启动就行了

5. 启动成功后,可以用windows的DOS命令连接检测一下,  telnet 服务器IP 4444

如果连接不成功,主要有两个原因,一是你的telnet客户端或者服务没有启动,具体启动方法百度.二是你服务器端的防火墙端口没有开启,开启方法自行百度.

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic546L5Zyj56We6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

服务器端出现以下提示即代表连接成功

8da8d46aa4ed41a7a559b0e8f66241c2.png

 6. 连接成功后我们就可以在Jmeter上开始进行测试.点击 jp@gc-PerfMon Metrics Collector,在Servers Monitor中点击Add Row,添加服务器IP和端口号,Metric to collect下选择CPU/Memory/Disks I/O.然后设置线程组执行次数和循环次数,这里我设置执行1000次,循环10次,100秒内执行完

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic546L5Zyj56We6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

 7. 点运行按钮,Chart中出现以下画面即代表监控成功

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic546L5Zyj56We6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

 从画面中我们看出服务器CPU,内存,磁盘的运行状况,CPU和磁盘曲线在正常范围内波动,表示CPU、磁盘相对趋于稳定,内存曲线无波动一直处于一个稳定的值,表示内存也趋于稳定.

8 .这种监控一般配合web服务器来一起测试,访问web,监控服务器,这样才有实际的意义.我已经预装了Tomcat,这里我们以Tomcat为例来进行.首先保证tomcat能正常访问.然后在HTTP Request中添加以下参数.

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic546L5Zyj56We6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

9. 点击运行,然后观察曲线变化

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic546L5Zyj56We6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

 从图中我们看出各性能曲线都趋于正常,相对我们直接监控服务器CPU和磁盘更加稳定了.这是由于云服务器的保护机制,像云服务器的大型厂商,阿里、腾讯、华为,都针对各家的云服务器开发有保护技术,我这里监控的是阿里云服务器,当我再次运行后去服务端用 top命令观察cpu的状况,看到Java服务在首行,其次有一个AliyunDun的服务. 查阅官网得知,阿里云盾是针对阿里云服务器的一项保护技术,它可以过滤掉90%的异常访问包括一些DOS攻击,从而达到保护服务器的目的。


接下来我们测试数据库的性能(以mysql为例)

1. 这里我们着重于数据库的性能,不考虑网速的影响,所以我们采用本地的数据库(我安装的是Mysql8.0),打开Jmeter,添加线程组,右键 线程组>> Config Element >> JDBC Connection Configuration 添加JDBC配置, Variable Name处填写一个变量名 mysql (注意,自己起的名字要记住,后面要引用),在Database Connection Configuration处分别输入以下数据

fdf5686bc1314b13b956e537bae2891b.png

 Database URL是你的数据库连接地址,JDBC Driver class是加载的驱动类(如果你驱动包是5以上的版本,驱动类为com.mysql.cj.jdbc.Driver),Username是你的数据库用户名,Password是密码.

2. 右键线程组 >> Sampler >> JDBC Request 添加JDBC请求, Variable Name 后填写mysql(这里引用的是JDBC Connection Configuration中的Variable Name).Query Type 后选择 Select Statement,这里我们主要测试对数据库的查询,在实际开发中查询也是首要的测试点,Query下输入sql语句, 可以联查多张表.

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic546L5Zyj56We6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

 3. 以上步骤完成后,对数据库的测试配置就完成了,最后添加察看结果树(View Results Tree),聚合报告(Aggregate Report)。在执行之前还需要把JDBC的连接jar包引入进来.点击测试计划,在最下面Add directory or jar to calsspath处点击 Browser,然后选择你本地的jar包 确定

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic546L5Zyj56We6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

 4. 选择线程组,设置执行次数100,循环次数10,执行时间100秒.点击运行. 点击 Aggregate Report查看

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic546L5Zyj56We6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

从上图看出,测试执行了1000次,平均响应时间2毫秒,无出错率,1秒内的吞吐量为10,趋于稳定.

各参数的解释如下 ,响应时间,出错率,吞吐量,最小响应,最大响应是测试的几个重要参数指标.

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Lic546L5Zyj56We6aOO,size_20,color_FFFFFF,t_70,g_se,x_16

5. 最后一步,导出聚合报告数据. 点击底部的 Save Table Data,选择存放位置,会导出一个.CSV的Excel文件.

a7f3c3779bc448e69f45cc3e6c1b53e3.png

除此之外还可以通过Jmeter的非GUI运行方式导出


至此,我们已完成了对服务器、数据库的压测,从而得出了测试数据.通过对测试数据的分析可以帮助我们在服务器配置参数和数据库参数配置方面进行调优,从而使其达到一个最佳的性能状态

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL的基础操作与管理

一.MySQL数据库基本操作知识: 1.SQL语句: 关系型数据库,都是使用SQL语句来管理数据库中的数据。 SQL,即结构化查询语言(Structured Query Language) 。 SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控…

【机器学习】基于蝴蝶算法优化的BP神经网络分类预测(BOA-BP)

目录 1.原理与思路2.设计与实现3.结果预测4.代码获取 1.原理与思路 【智能算法应用】智能算法优化BP神经网络思路【智能算法】蝴蝶优化算法(BOA)原理及实现 2.设计与实现 数据集: 数据集样本总数2000 多输入多输出:样本特征24&#xff0c…

WAF是什么意思?waf防火墙部署方式

防火墙中的WAF是什么意思?WAF是Web Application Firewall的简称,即Web应用防火墙(也称网站应用级入侵防御系统)一种专门为Web应用提供保护的网络安全设备,工作在应用层,通过执行一系列针对HTTP/HTTPS的安全…

GraalVM详细安装及打包springboot、java、javafx使用教程(打包普通JAVA项目篇)

前言 在当前多元化开发环境下,Java作为一种广泛应用的编程语言,其应用部署效率与灵活性的重要性日益凸显。Spring Boot框架以其简洁的配置和强大的功能深受开发者喜爱,而JavaFX则为开发者提供了构建丰富桌面客户端应用的能力。然而&#xff…

硬盘、内存、缓存(CPU)和寄存器 空间大小与存取速度的区别及设计原理

一、寄存器和存储器是不同的 很多人会将 寄存器 与 存储器 二者混淆,认为它们是同一个东西。但并不是!! 寄存器是CPU上的一个模块 存储器是 内存硬盘的统称 二、存取速度的比较 CPU(包含寄存器,缓存) > 内存 > 硬盘 内…

Monoxer Programming Contest 2024(AtCoder Beginner Contest 345)(A,B,C,D,E,F)

比赛链接 这场。。。好像已经是一周之前的比赛来着,终于补完了。 C是个披着字符串外衣的数学容斥题。D是个超级超级暴力的爆搜,写起来超级麻烦,感觉。。。真是一次酣畅淋漓的赤石。E是个DP,朴素想法其实比较直观,不过…

C# 右键快捷菜单(上下文菜单)的两种实现方式

在C#中,ContextMenuStrip是一种用于创建右键菜单的控件。它提供了一种方便的方式来为特定的控件或窗体添加自定义的上下文菜单选项。有两种实现方式,如下: 一.通过ContextMenuStrip控件实现 1.从工具箱中拖一个ContextMenuStrip控件到窗体上…

银行量子金融系统应用架构设计

量子金融(即Financial-Quantum,简称Fin-Q),特指量子科技在金融行业中的应用。 目前,量子科技中以量子保密通信、量子随机数和量子计算发展进度较快,取得了诸多阶段性重大技术突破和商用成果,这…

vue学习日记13:记账清单,渲染添加删除

一.需求说明 二、实践 1.基本渲染 &#xff08;1&#xff09;代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" …

JAVA安全(偏基础)

SQL注入 SQLI(SQL Injection)&#xff0c; SQL注入是因为程序未能正确对用户的输入进行检查&#xff0c;将用户的输入以拼接的方式带入SQL语句&#xff0c;导致了SQL注入的产生。攻击者可通过SQL注入直接获取数据库信息&#xff0c;造成信息泄漏。 JDBC JDBC有两个方法获取s…

实时数仓之实时数仓架构(Doris)

目前比较流行的实时数仓架构有两类,其中一类是以Flink+Doris为核心的实时数仓架构方案;另一类是以湖仓一体架构为核心的实时数仓架构方案。本文针对Flink+Doris架构进行介绍,这套架构的特点是组件涉及相对较少,架构简单,实时性更高,且易于Lambda架构实现,Doris本身可以支…

Vue3中基本数据类型为什么需要.value,,,引用类型不需要.value

1、在v3中使用基本数据类型&#xff08;如数字、字符串、布尔值&#xff09;时&#xff0c;如果你希望响应式地更新数据并触发视图更新,需要使用ref包裹基本数据类型,然后将基本数据类型转化为响应式对象;- - - 因此当你使用ref包裹基本数据类型时,实际上得到的是一个包含.valu…

解读 Xend Finance:向 RWA 叙事拓展,构建更具包容性的 DeFi 体系

在二十世纪后&#xff0c;非洲地区陆续爆发了主权运动&#xff0c;这也让非洲大陆逐渐摆脱“殖民地”的标签。目前&#xff0c;非洲大陆公有 54 个主权国家&#xff0c;接近 15 亿且仍在飙升的人口规模&#xff0c;其 GDP 已经与印度相当&#xff0c;且仍旧处于飞速的发展进程中…

计算机服务器中了mkp勒索病毒怎么办,mkp勒索病毒解密工具流程

在网络飞速发展的时代&#xff0c;越来越多的企业离不开网络&#xff0c;利用网络可以为企业更好地开展各项工作业务&#xff0c;帮助企业有效调整发展方向与规划&#xff0c;但网络是一把双刃剑&#xff0c;在为人们提供便利的同时&#xff0c;也为企业的数据安全带来严重威胁…

【Apache ShenYu源码】如何实现负载均衡模块设计

ShenYu是一个异步的&#xff0c;高性能的&#xff0c;跨语言的&#xff0c;响应式的 API 网关。有关ShenYu的介绍可以戳这。 一、前瞻 今天我们尝试不同的代码阅读方式&#xff0c;按模块来去阅读源码&#xff0c;看看效果如何。 本次阅读锁定在shenyu-loadbalancer&#xf…

Qt登录页面

#include "mywidget.h" #include "ui_mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent), ui(new Ui::MyWidget) {ui->setupUi(this);//接收动图QMovie *mv new QMovie(":/pictrue/luori.gif");ui->loglab->setMovie(…

ssm项目(tomcat项目),定时任务(每天运行一次)相同时间多次重复运行job 的bug

目录标题 一、原因 一、原因 debug本地调试没有出现定时任务多次运行的bug&#xff0c;上传到服务器就出现多次运行的bug。&#xff08;war的方式部署到tomcat&#xff09; 一开始我以为是代码原因&#xff0c;或者是linux和win环境不同运行定时任务的方式不一样。 但是自己…

Chronicles 是什么数据库

可以理解的是 Chronicles 是 EPIC 公司根据 IRIS 进行魔改后的一个 DBMS。 简单的来说 Chronicles 就是一个数据库管理系统&#xff0c;但这个数据库管理系统不是我们常说的关系数据库的管理系统。 数据库结构 只要对数据库有所了解的都知道数据库通常就是 2 个部分&#xf…

基于Springboot的银行客户管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的银行客户管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

马斯克开源Grok-1

Grok-1是由马斯克AI创企xAI发布的第一代大语言模型&#xff0c;它以其巨大的参数量——高达3140亿&#xff0c;引起了全球范围内的广泛关注。这一参数量远超其他知名模型&#xff0c;如OpenAI的GPT-3.5&#xff0c;后者仅有1750亿参数。在2024年3月17日&#xff0c;马斯克宣布将…