JMeter压力测试与JVM监控以及调优

一、性能指标

-★ 响应时间(Response Time: RT)

响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响
应结束,整个过程所耗费的时间。
HPS(Hits Per Second) :每秒点击次数,单位是次/秒。
★TPS(Transaction per Second):系统每秒处理交易数,单位是笔/秒。
★QPS(Query per Second):系统每秒处理查询次数,单位是次/秒。
对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS=QPS=HPS,一
般情况下用 TPS 来衡量整个业务流程,用 QPS 来衡量接口查询次数,用 HPS 来表
示对服务器单击请求。
无论 TPS、QPS、HPS,此指标是衡量系统处理能力非常重要的指标,越大越好,根据经
验,一般情况下:
金融行业:1000TPS~50000TPS,不包括互联网化的活动(秒杀等)
保险行业:100TPS~100000TPS,不包括互联网化的活动
制造行业:10TPS~5000TPS
互联网电子商务:10000TPS~1000000TPS
互联网中型网站:1000TPS~50000TPS
互联网小型网站:500TPS~10000TPS
最大响应时间(Max Response Time) 指用户发出请求或者指令到系统做出反应(响应)
的最大时间。
最少响应时间(Mininum ResponseTime) 指用户发出请求或者指令到系统做出反应(响
应)的最少时间。
90%响应时间(90% Response Time) 是指所有用户的响应时间进行排序,第 90%的响应时间。
从外部看,性能测试主要关注如下三个指标
吞吐量可以理解为TPS或QPS:每秒钟系统能够处理的请求数、任务数。
响应时间:服务处理一个请求或一个任务的耗时。
错误率:一批请求中结果出错的请求所占比例。

二、JMeter压力测试

2.1 下载

官网:https://jmeter.apache.org/
下载:https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-5.4.1.tgz

2.2 安装与启动

解压后点击jmeter.bat 启动在这里插入图片描述

2.3 使用

选择中文窗口,由于我选完中文以后,右上角的线程数和总耗时看不到了,所以我就不设置中文了。
在这里插入图片描述
创建线程组
在这里插入图片描述
设置线程数和次数
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210617205727616.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L
2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
在这里插入图片描述
添加http请求
在这里插入图片描述
添加监控,一般我们选择前3个监控
在这里插入图片描述
查看结果树
在这里插入图片描述
汇总报告
在这里插入图片描述

聚合报告
吞吐量 :189 下面我们做一下优化
在这里插入图片描述
在这里插入图片描述

2.4 分析结果报告

首先考虑自己的应用属于 CPU 密集型还是 IO 密集型
** 有错误率同开发确认**,确定是否允许错误的发生或者错误率允许在多大的范围内;
Throughput 吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机
器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的
往下减,找到最佳的并发数;
压测结束,登陆相应的 web 服务器查看 CPU 等性能指标,进行数据的分析;
最大的 tps,不断的增加并发数,加到 tps 达到一定值开始出现下降,那么那个值就是
最大的 tps。
最大的并发数:最大的并发数和最大的 tps 是不同的概率,一般不断增加并发数,达到
一个值后,服务器出现请求超时,则可认为该值为最大的并发数。
压测过程出现性能瓶颈,若压力机任务管理器查看到的 cpu、网络和 cpu 都正常,未达到 90%以上,则可以说明服务器有问题,压力机没有问题。
影响性能考虑点包括
数据库、应用程序、中间件(tomact、Nginx)、网络

CPU密集型:一般是有大量的计算排序等的应用,如果cpu占用70-80%以上就是cpu密集型
IO密集型:网络传输,文件保存,磁盘读写,数据库读写,redis读写,es读写等

2.5 实战1 测试中间件对性能的影响

我们的项目在访问一个微服务请求时,第一步要经过nginx ,第二步要经过gateway,第三步才会访问到具体的微服务接口,由于我们的微服务时装在虚拟上的,相当于时本地会启动很多的应用,所以测试时并发线程不能设置太高,我们以50个线程 无线循环进行测试。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
压测首页的所有资源和数据
在这里插入图片描述

三、jvisualvm 性能监控的安装和使用

1)jvm内存模型

2)性能监控工具jconsole 和 jvisualvm

Jdk 的两个小工具 jconsole、jvisualvm(jdk1.6以上版本才有,升级版的 jconsole);通过命令行启动,可监控本地和
远程应用。远程应用需要配置,所以我们重点使用jvsualvm
jsoncole 显示样例
在这里插入图片描述
★ jvisualvm 监控
第一步:运行,cmd下输入jvisualvm 启动工具
在这里插入图片描述
在这里插入图片描述
第二步:选中某个微服务进行监控

在这里插入图片描述
第三步:查看各部分信息
概况
在这里插入图片描述
监视
在这里插入图片描述
线程
在这里插入图片描述
监控内存泄露,跟踪垃圾回收,执行时内存、cpu 分析,线程分析… 运行:正在运行的
在这里插入图片描述
休眠:sleep
等待:wait
驻留:线程池里面的空闲线程
监视:阻塞的线程,正在等待锁

GC监控,需要安装gc插件,gc插件的安装方法在本文的末尾。
在这里插入图片描述

四、 优化

4.1 优化jvm的大小 Xmx100m 改为 Xmx512m

吞吐量从:189 变成 199.6 优化有效
在这里插入图片描述
在这里插入图片描述
full gc要比 gc慢10倍以上,所以要尽量减少full gc

4.2

其他

1)JMeter Address Already in use 错误解决

windows 本身提供的端口访问机制的问题。
Windows 提供给 TCP/IP 链接的端口为 1024-5000,并且要四分钟来循环回收他们。就导致
我们在短时间内跑大量的请求时将端口占满了。
1.cmd 中,用 regedit 命令打开注册表
2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 下,
1 .右击 parameters,添加一个新的 DWORD,名字为 MaxUserPort
2 .然后双击 MaxUserPort,输入数值数据为 65534,基数选择十进制(如果是分布式运
行的话,控制机器和负载机器都需要这样操作哦)
3.添加DWORD TCPTimedWaitDelay:30
4. 修改配置完毕之后记得重启机器才会生效
https://support.microsoft.com/zh-cn/help/196271/when-you-try-to-connect-from-tcp-ports-grea
ter-than-5000-you-receive-t
在这里插入图片描述

2)jvisualvm 安装插件方便查看 gc

第一步:插件工具下载地址设置
工具》插件-设置
在这里插入图片描述
第二步:通过 https://visualvm.github.io/pluginscenters.html 获取当前jdk对应插件地址
插件选择地址:https://visualvm.github.io/pluginscenters.html
在这里插入图片描述
第三步:设置正确的插件地址并安装插件,就是第一步中最后的那个位置,但要注意把地址中的https改成http协议,要不然会出现无法获取插件的问题
在这里插入图片描述
在这里插入图片描述
安装插件
在这里插入图片描述
由于jvisualvm不支持https而无法现在的解决办法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述

3)几个常用工具 与 命令示例

工具名称 描述
jstack left-aligned 查看 jvm 线程运行状态,是否有死锁现象等等信息
jinfo left-aligned 可以输出并修改运行时的 java 进程的 opts。
jps left-aligned 与 unix 上的 ps 类似,用来显示本地的 java 进程,可以查看本地运行着几个 java程序,并显示他们的进程号。
jstat left-aligned 一个极强的监视 VM 内存工具。可以用来监视 VM 内存内的各种堆和非堆的大小及其内存使用量
jmap left-aligned 打印出某个 java 进程(使用 pid)内存内的所有’对象’的情况(如:产生那些对象,及其数量)

猜你喜欢

转载自blog.csdn.net/fen_dou_shao_nian/article/details/118001440