上一篇性能测试指标的文章中,我们捋了下业务指标的意义,对于性能测试的分析有一定帮助,若要更全面分析性能测试中服务器的响应情况如何,仍需对CPU,内存,磁盘,网络的信息做个大概的了解.
CPU
谈及cpu,最常见的一个指标自然是cpu占用率,测试中发现cpu占用率达到80%以上,甚至90%,就应当重点关注cpu的详细情况,可能要到系统的性能瓶颈了.
单看cpu占用率,是很蒙圈的,只知道cpu占用过高,却不知道是哪个部分cpu占用较多.
具体的定位方式可以用top命令,在cpu栏有三项可着重留意,分别是:
us:用户应用程序占用cpu的百分比
sy:系统内核占用cpu的百分比
id:系统空闲的百分比
us+sy得到的数值即为系统cpu的占用率.此外,也可通过top命令的cpu负载数值(lood average)判断cpu使用情况,若该数值长时间大于cpu核数的两倍,也说明cpu负载过高,需要进一步分析.进一步分析可用strace命令,定位内核执行的哪些库函数耗费了更多的cpu.能力有限,就不展开讨论了.
内存
查看内存也有个很常用的命令,free -h,可获取系统总内存,已占用内存,空闲内存,缓存大小等信息.一般而言,占用内存在80%以内算正常,大于80%,就需要提防内存溢出.
free命令是静态命令,只显示一次当下的内存情况,如需看到每秒钟内存的变化情况,可以用watch命令加free命令做动态显示.
内存检查过程中,还有一个需要留意的指标,就是内存和磁盘间做页面交换的频率,频率越高,也能说明内存可能不足,才需要频繁从磁盘读取数据.该数据可通过命令vmstat的si(磁盘读取到内存的大小)和so(内存读取到磁盘的大小)查看.
磁盘
磁盘信息主要关注三个指标,分别是磁盘使用率,IOPS,数据吞吐量.
磁盘使用率,指统计过程中处理I/O请求的时间与统计时间的百分比.可从命令iostat的%util获得该数值.磁盘使用率过高,性能有可能遇到考验.
IOPS和数据吞吐量分别适用于磁盘随机IO和顺序IO时的考量,数值均能从iostat命令的结果中得到.
网络
通过网络流量的大小,可以看出网速是否达到带宽上限,接近或等于带宽上限的时候,系统性能会急剧下降.平常我们的性能测试都是在局域网中进行,网络环境较为稳定,带宽高,但也要保持对网络流量的关注,有些情况下cpu,内存和磁盘等指标都正常,但是服务器的性能就是上不去,此时就很有必要观察下流量情况.
查看网络流量的命令也有很多,sar是其中一个,数据统计也较为详细.可以作为常用的网络工具.
以上,仅仅是通过一些简单的指标对服务器的性能做观察,只能大致定位问题的所在,真正去挖掘深层次的原因,需要辅以更多更复杂的工具,以及对于系统,对于服务器架构,对于中间件,对于业务代码的深刻理解,不是一蹴而就的事.
当然,作为团队的一员,性能测试工程师做出了详尽实用的性能测试,精准的定位到具体的方向上,其他的工作可以交由开发人员协助完成,也已经是一件了不起的事了.相反,如果每次都像模像样的做了一堆性能测试,结果一个问题都没发现,那就很尴尬了.
好吧,说的其实就是我自己.继续学习,为了自己不那么尴尬.
网友评论