性能测试中,对服务端的指标监控也是很重要的一个环节。通过对各项服务器性能指标的监控分析,可以定位到性能瓶颈。
后端性能指标有CPU,内存,网络,磁盘I/O 队列 等
还需要关注后端中间件的配置,比如Tomcat redis 消息队列服务器 负载均衡ngnix
主从数据库的一些参数配置情况,需要进行了解并监控信息等等......
服务器的瓶颈分析需要了解整体的项目组成结构才可更好的分析性能瓶颈以及所要关注的东西
思路分析
整体系统CPU利用率
内存利用率
磁盘I/O的利用率和延迟
网络利用率
下面是性能测试环境,服务器的常用命令
CPU定位分析
CPU利用率大于50%,需要注意;大于75%,需要密切关注;高于90%-95%,情况比较严重;
监控命令:vmstat、sar、dstat、mpstat、top、ps
类型 | 度量方法 | 衡量标准 |
利用率 | 1、vmstat 统计1-%idle 2、sar -u 统计1-%idle 3、dstat 统计1-%idl 4、mpstat -P ALL 统计1-%idle | 注意>=50% 告警>=70% 严重>=90% |
满载 | 1、vmstat的r值> cpu逻辑颗数 2、sar -q ,“runq-sz”>cpu逻辑颗数
| 运行队列大于1时,证明已经有一定的负载 |
内存定位分析
当物理内存不够时,会使用swap分区,所以性能测试过程中需要关注swap和mem的使用情况。
物理内存不够,大量的内存置换到swap空间,可能导致CPU和I/O的瓶颈。
监控命令:vmstat、sar、dstat、free、top、ps等
类型 | 度量方法 | 衡量标注 |
占用率 | 1、free 查看使用情况 2、vmstat 3、sar -r 4、ps | 注意>=50% 告警>=70% 严重>=80% |
满载 | 1、vmstat的si/so比例,swapd占比 2、sar -W 查看次缺页数 3、dmesg | grep killed | 1、so数值大,且swapd已经占比很高,内存已经饱和 2、sar命令次缺页多意味内存已经饱和 3、内存不够用会触发内核的OOM机制 |
网络定位分析
监控命令:sar、ifconfig、netstat,以及查看net的dev速率。
通过查看发现收发包的吞吐率达到网卡的最大上限,网络数据报文有因为这类原因而引起的丢包、阻塞等现象都证明当前网络可能存在瓶颈。
为了减小网络对性能测试的影响,一般我们都在局域网中进行测试执行。
类型 | 度量方法 | 衡量标准 |
使用情况 | 1、sar -n DEV 的收发计数大于网卡上限 2、ifconfig RX/TX宽带超过网卡上限 3、cat /proc/net/dev的速率超过上限 4、nicstat的util基本满负荷 | 1、收发包的吞吐率达到网卡上限 2、有延迟 3、有丢包 4、有阻塞 |
满载 | 1、ifconfig dropped 有计数 2、netstat -s "segments retransmited"有计数 3、sar -n EDEV,rxdrop/s txdrop/s有计数 | 有丢包统计 |
错误 | 1、ifconfig,“errors” 2、netstat -i,RX-ERR TX-ERR 3、sar -n EDEV,rxerr/s txerr/s 4、ip -s link, “errors” | 错误有计数 |
IO定位分析
I/O读写频繁的时候,如果I/O得不到满足会导致应用的阻塞。
需要考虑I/O的TPS、平均I/O数据、平均队列长度、平均服务时间、平均等待时间、IO利用率(磁盘Busy Time%)等指标
监控命令:sar、iostat、iotop
类型 | 度量方法 | 衡量标准 |
使用情况 | 1、iostat -xz,“%util” 2、sar -d,“%util” 3、cat /proc/pid/sched | grep iowait | 注意>=40% 告警>=60% 严重>=80% |
满载 | 1、iostat -xnz,“avgqu-sz ”>1 2、iostat await>70 | IO疑似满载 |
错误 | 1、dmseg 查看io错误 2、smartctl /dev/sda | 有错误信息 |