《基于Jmeter的性能测试框架搭建》改进二
最近在进行新项目的压测,把《基于Jmeter的性能测试框架搭建》提到的框架又做了一些改进,主要是针对Grafana的配置。展开话题前先上一张性能监控图。
那么上图展现的数据是否准确呢?我们可以通过以下方式进行验证。
-
查看jenkins的构建日志,如下图所示。可发现tps、响应时间、请求总数、失败请求数等与grafana展现一致。
jenkins构建日志 -
使用top,vmstat等命令查看cpu损耗,与Grafana展现一致。
ps:下图仅用于top命令示范,与上面的性能监控图数据无直接关联。
CPU_top
在展开Grafana配置详述前,需先弄清楚以下metrics的含义,以便后续配置Grafana面板。
metrics
metrics
metrics
接着就可以进行面板配置了,各指标配置如下。 -
tps
tps -
总的请求数(成功+失败请求)
TotalRequests -
失败请求数
FaileRequests -
VU
VU -
成功请求的响应时间(avg,pct99,pct95,pct90)
成功请求的RespondTime -
cpu,由于监控服务器为4核,所以加了获取条件where cpu = cpu-total.
下图监控了用户cpu和系统cpu,对应top命令展现的us和sy,sy如果值太高,说明系统调用,例如IO操作频繁。其他参数可自行百度。
CPU -
如果有需要,也可以对io,内存等进行监控。
其他
由于Influxdb是一个时序数据库,Grafana也是按时序来展现性能结果,所以需留意Time range的配置,否则可能造成数据误差。比如Time range设置为2018-08-03 15:30:00 To 16:00:00,那么Grafana就会展现15:30到16:00:00的数据,如果15:30:00开始构建接口1,15:40接口1构建完成,15:41开始接口2构建,15:50接口2构建完成,那么此时Grafana面板展现的tps,响应时间,Total,failed等数据是【接口1+接口2】的综合取值。
TimeRange
讲完Grafana,咱们再回归压测脚本,之前文章也提过,Jmeter编写压测脚本异常简单,执行脚本后,自动生成上述的metrics,如下所示。
ps:新版本jmeter的Backend Listener亦支持influxdb,有兴趣的童鞋可以尝试。
压测脚本
不得不说,Grafana和Jmeter真的是天作之合。