一、场景
在做性能测试的时候, 服务端的各项资源指标是性能测试非常关心的问题
性能测试监控的指标主要分为两大类: 资源指标和系统指标
1、资源指标与硬件资源消耗息息相关。
2、系统指标则与用户场景和业务需求直接相关。
资源指标
CPU 使用率: 用户进程与系统进程消耗的CPU百分比, 一般长时间可以接受的上限不超过85%
Memory 利用率: (1-空闲内存/总内存)*100%, 一般至少留有10%的可用内存, 长时间内存使用率上限可接受范围85%
Disks I/O 用于磁盘存取数据: 用于读写操作所占用的时间百分比, 度量磁盘读写性能
Network I/O 网络带宽: 表示为发送和接收字节的速率, 判断网络连接速度是否存在瓶颈,可以用该计数器的值和目前网络的带宽比较。
SWAP: 顾名思义就是一个临时虚拟内存区域但物理内存不足的时候拿出部分空间使用,从而解决内存容量不足的。
如何参看swap呢? 用 free -m 命令,这里可以看到内存和swap的使用状态(单位:MB)
系统指标
并发用户数:某一时刻同时向系统提交请求的用户数
在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求
平均响应时间:系统处理事务的响应时间的平均值。事务的响应时间是从客户端提交请求到服务器响应所消耗的时间。
事务成功率:性能测试中,定义事务用于度量一个或者多个业务流程的性能指标,如用户登录, 提交订单操作均可定义为事务。
二、如何监控服务端关键指标呢?
主要针对Unix, Linux, Centos 等进行监控
以unix为例 free、vmstat、sar、iostat等命令监控内存、CPU、磁盘IO等的使用情况, 第三方工具有nmon, spotlight等
今天我们着重讲的是性能测试工具Jmeter监控服务端资源
三、Jmeter监控服务端资源
首先添加监听器 jp@gc - PerfMon Metrics Collector
这是一个插件, 推荐去官网上下载:
https://jmeter-plugins。org/(JMeterPlugins-Standard)
老规矩还是将插件放在%jmeterhome%/lib/ext,重启jmeter生效
演示期间为了避免敏感信息打码, 用本地环境代替服务端(两者在本质上区别不大)
如图添加相关信息后, 并结合实际线程组里的用例, 即可以执行了。
日志显示出错了,这是怎么回事呢? 别急, 继续往下看
解决方法: log显示Connection refused (Connection refused), 因为我们还有一件事情没有做。 缺少ServerAgent-2.x, 将它传到服务端上解压即可使用, 可能会遇到权限问题, 给他赋予相应权限(如用:chmod 755 -R xxx), 并执行 ./startAgent.sh , 至此, 准备工作完成。
好, 让我们来启动一下startAgent
agent启动后我们再次回到jmeter执行脚本, 查验我们添加的监控是否有效
报错信息没有了,说明我们的agent部署成功了。
想要监控服务端的资源性能, 一次或者短时间是不具有说服力和参考价值的, 可以将线程组中的循环次数改变, 如设置为永远。
还有其他方法如设置Ramp-Up,将其设置到一个合适的数值或者结合调度器使用, 几种方式大家可以自己去尝试下, 观察资源变化情况, 这就是业务场景分析, 转化成用例了。
性能测试是一个长期投入的过程, 不是简单的跑几次压测工具就能测出问题。 他需要工程师沉淀非常多的性能测试工具使用, 性能测试基础知识, 服务器性能诊断, 服务端性能监控, 以及非常清晰的了解公司服务架构, 中间件, 操作系统, 数据库, 使用的网络协议, 网络, 网关, 路由等, 还需要将公司实际业务转换为测试场景和测试用例。
其他补充:
配置服务器地址和端口号,启动线程组,查看监听器性能渲染图,如果出现图证明成功了,未出现图,查看日志。
1、确认agent是否已启动监控
2、默认端口号是4444,可以自行更换端口
3、与运维确认端口号是否开放
4、确认压测机与服务器是否再同一网段内,若不是同一网段,压测会有vpn限制结果不准确,需运维重新开设压测机(与服务器同一网段)