前言
评估一个系统的性能,一般通过一些指标类体现,如:
响应时间 :应用程序处理请求所需的时间,反映应用程序对请求做出响应的速度。可以使用System.currentTimeMillis()或JMX来测量。
吞吐量 :应用程序每秒处理的请求数量,衡量应用程序处理能力的关键指标。可以使用JMeter或ApacheBenchmark进行压力测试来测量。
资源使用:包括CPU使用率、内存使用量以及垃圾收集(GC)时间等,这些指标反映应用程序对系统资源的占用情况。可以使用Java Management Extensions(JMX)或jstat命令来监控这些指标。
一、Jmeter配置使用
1.1、下载安装
直接在官网下载并解压即可
解压之后,通过bin目录下面的jmeter.bat文件启动
1.2、设置中文
点击上方的options/choose language/Chinese
1.3、创建测试计划
创建线程组
右键点击测试计划,添加,线程,线程组
这里可以设置请求的线程数,循环请求的次数等。压测、并发测试的时候需要使用
创建Http请求
右键点击线程组,添加,取样器,HTTP请求
设置请求参数:需要填写请求协议,一般HTTP或HTTPS,服务器ip或者域名,请求方式,请求路径,编码等,如果需要请求参数可以点击下方的添加来添加参数。
添加请求头
右键点击HTTP请求,添加,配置元件,HTTP消息头管理器
点击下方的添加可以往请求头添加参数
创建结果视图
右键点击线程组,添加,监听器,查看结果树,汇总报告,聚合报告,两个报告的数据有所不同,看需要使用
结果树
汇总报告
聚合报告
全部配置完成之后,点击上方的绿色开始按钮开始进行测试。
二、测试方法
基准测试(Baseline Testing):
通过记录系统在正常条件下的性能指标作为基准,后续的测试结果将与该基准进行对比。
简单来说,就是单用户,重复多次去请求同一个接口,然后计算出平均的响应时长作为基准。
如下设置:
负载测试(Load Testing):
在模拟实际生产环境中的负载条件下,测试系统的性能表现。
简单来说,就是多用户,测试预期最大流量情况下系统的性能极限。(在满足系统的性能指标情况下,找出系统所能承受的最大负载量),假设同时有100个人请求同一个接口。
稳定性测试
需求方提出要求稳定运行的负载。这个要求的量就是系统要达到的稳定运行负载量。
压力测试(Stress Testing):
在超出系统正常负载的条件下,测试系统的性能极限和稳定性。
简单来说,就是多用户模拟高并发,模拟极限负载导致系统崩溃的破坏性压力测试或者高负载下长时间稳定运行压力测试。(看系统是否具备容错能力和可恢复能力)
并发测试(Concurrency Testing):
测试系统在同时有多个用户访问的情况下的性能表现。
并发测试和压力测试差不多,不过并发强调的是线程数多。
容量测试(Capacity Testing):
测试系统在达到峰值负载情况下的性能表现,并确定系统的容量上限。
三、指标监控
系统的指标:CPU,内存,数据库;服务的各种指标:吞吐量,程序健康状态等
如果采用的是云服务,系统指标可以在云服务器官网查看。一般也会有整合一些仪表盘来观测系统情况,最保底还可以通过命令行来查看系统的各种资源状况。
服务指标可以通过整合spring admin来查看。
一边测试一边观测仪表盘各种指标的变化。
四、结果分析
通过上面的各种报告可以查看请求的各种信息,如平均请求时长,时间的方差,吞吐量等等。
通过更改参数多次运行,还可以测出系统的稳定运行负载,极限负载等。
五、性能调优
通过监控指标、结果分析,可以知道性能瓶颈出现的位置,然后针对性去提升性能。