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 性能监控的安装和使用
3.1 jvm内存模型
略
3.2 性能监控工具jconsole 和 jvisualvm
Jdk 的两个小工具 jconsole、jvisualvm(jdk1.6以上版本才有,升级版的 jconsole);通过命令行启动,可监控本地和
远程应用。远程应用需要配置,所以我们重点使用jvsualvm
jsoncole 显示样例
★ jvisualvm 监控
第一步:运行,cmd下输入jvisualvm 启动工具
第二步:选中某个微服务进行监控
第三步:查看各部分信息
概况
监视
线程
监控内存泄露,跟踪垃圾回收,执行时内存、cpu 分析,线程分析… 运行:正在运行的
休眠:sleep
等待:wait
驻留:线程池里面的空闲线程
监视:阻塞的线程,正在等待锁
GC监控,需要安装gc插件,gc插件的安装方法在本文的末尾。
3.3 jvisualvm 远程监控
样例
java -jar -Djava.rmi.server.hostname=10.30.23.62 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1141 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dfile.encoding=UTF-8 arthas-demo.jar
参数说明
-Djava.rmi.server.hostname=192.168.1.230 // 主机地址 ★
-Dcom.sun.management.jmxremote=true // 运行远程链接jvm虚拟机
-Dcom.sun.management.jmxremote.port=1141 // 远程链接jvm的端口 ★
-Dcom.sun.management.jmxremote.ssl=false // 是否使用ssl加密传输
-Dcom.sun.management.jmxremote.authenticate=false // 是否需要认证```![在这里插入图片描述](https://img-blog.csdnimg.cn/ad9d467ad43d4c00b8337c7df785bb61.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4a6259574b9c4c4eaaa915e43bb75c83.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/424ab53b6f5145059f99bd2b7deebe17.png)## 四、 优化### 4.1 优化jvm的大小 Xmx100m 改为 Xmx512m
吞吐量从:189 变成 199.6 优化有效
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210617214126298.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210617214714237.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
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
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210617220234276.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
### 2)jvisualvm 安装插件方便查看 gc
第一步:插件工具下载地址设置
工具》插件-设置
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210619112320516.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
**第二步:通过 [https://visualvm.github.io/pluginscenters.html](https://visualvm.github.io/pluginscenters.html) 获取当前jdk对应插件地址**
插件选择地址:[https://visualvm.github.io/pluginscenters.html](https://visualvm.github.io/pluginscenters.html)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210619112821139.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
**第三步:设置正确的插件地址并安装插件,就是第一步中最后的那个位置,但要注意把地址中的https改成http协议,要不然会出现无法获取插件的问题**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210619115033433.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210619115100655.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
安装插件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210619115215106.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
由于jvisualvm不支持https而无法现在的解决办法
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210619120248309.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210619120610137.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210619120756693.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)
测试
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021061912352892.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Zlbl9kb3Vfc2hhb19uaWFu,size_16,color_FFFFFF,t_70)### 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)内存内的所有'对象'的情况(如:产生那些对象,及其数量) |
JMeter压力测试与JVM监控以及调优相关推荐
- Java系列笔记(4) - JVM监控与调优【转】
Java系列笔记(4) - JVM监控与调优[转] 目录 参数设置 收集器搭配 启动内存分配 监控工具和方法 调优方法 调优实例 光说不练假把式,学习Java GC机制的目的是为了实用,也 ...
- [java] JVM监控与调优
原文出处:http://www.cnblogs.com/zhguang/p/java-jvm-gc.html 光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分 ...
- Tomcat性能调优-JVM监控与调优
参数设置 在Java虚拟机的参数中,有3种表示方法用"ps -ef |grep "java"命令,可以得到当前Java进程的所有启动参数和配置参数: 标准参数(-),所有 ...
- 压力测试时候Linux系统参数的调优
有个站点,我用ab做压测,结果ab总是返回错误,我做了如下的一些调优,最后正常了. nginx的配置 .conf: worker_processes 32; worker_connections 65 ...
- Apache Jmeter压力测试与性能监控,监测cpu、内存、磁盘、网络
1.官网下载Jmeter 解压,bin目录下 Windows 运行jmeter.bat .Linux运行jmeter.sh 2.jmeter-plugins-manager 插件 测试机下载放置Jme ...
- DataPipeline |《Apache Kafka实战》作者胡夕:Apache Kafka监控与调优
胡夕,<Apache Kafka实战>作者,北航计算机硕士毕业,现任某互金公司计算平台总监,曾就职于IBM.搜狗.微博等公司.国内活跃的Kafka代码贡献者. 前言 虽然目前Apache ...
- JVM 下篇:性能监控与调优
文章目录 性能优化三部曲 第1步(发现问题):性能监控 何时需要性能监控 第2步(排查问题):性能分析 第3步(解决问题):性能调优 性能评价/测试指标 JVM监控及诊断工具命令行 jps jstat ...
- JVM(四)_性能监控与调优
不定期补充.修正.更新:欢迎大家讨论和指正 本文主要根据尚硅谷的视频学习,建议移步观看,其他参考资料会在使用时贴出链接 尚硅谷宋红康JVM全套教程(详解java虚拟机) 由于JVM的知识是互相穿插的, ...
- Java虚拟机|JVM知识点汇总及简述->性能监控与调优
性能监控与调优 前言 这里学完整章后选择一到两个工具使用熟练,个人推荐Visual VM和Arthas搭配熟练使用 一.概述 1.性能评价/测试指标 1.1 停顿时间(响应时间) 提交请求和返回该请求 ...
最新文章
- CentOS 6.3 64bit上测试ATS 5.3.0中的正则刷新插件regex_revalidate
- DOS 和 Linux 常用命令的对比
- 淘宝的人工封IP技术真好玩
- 图解使用Win8Api进行Metro风格的程序开发二----使用文件选择器访问和保存文件
- 我是如何进入全球顶级AI实验室的 (1)
- boost::log::string_literal用法的测试程序
- 关于substring的理解
- grass gis怎么使用_使用GRASS GIS返回学校
- leetcode 刷题指南
- 用计算机写试卷反思,计算机试卷
- [leetcode]Longest Palindromic Substring
- [javaweb]jsp+servlet+mysql购书网站
- HTTP 405Method not allowed
- 有效沟通bic法则_南宁人际沟通培训
- Spring Boot从0开始学的个人笔记10 --任务
- 支持电力国网I1协议的4G低功耗摄像头解决方案
- [跨境工具通]2020年Shopify卖家可以免费使用的10款Dropshipping工具推荐
- SpringBoot高级特性
- 3DMAX快速入门 界面介绍【上】
- iOS之AVPlayer、MPMoviePlayerController、MPMoviePlayerViewController、AVPlayerViewController播放音乐和视频