定位性能瓶颈的一些工具
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定位性能瓶颈的一些工具相关的知识,希望对你有一定的参考价值。
定位性能瓶颈的工具
- top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
- iostat命令查看系统输入输出设备和CPU的使用情况; iostat -x命令,其中有个非常重要的指标%util,表示io等待占的百分比;如果%util数值达到50%或60%,说明磁盘的io非常差;如果%util数值很大,则rkB/s和wkB/s数值也很大;如果rkB/s和wkB/s数值不大,%util数值很大,这说明硬盘有问题。
- iotop命令是一个用来监视磁盘I/O使用状况的top类工具,可以动态查看哪一个进程在频繁的读写。
查看CPU
top命令:
Cpu(s): 14.8%us, 0.8%sy, 0.0%ni, 60.3%id, 83.8%wa, 0.1%hi, 0.2%si, 0.0%st
如果磁盘IO是瓶颈之一的话,那么%wa的值就会很高,那么这个时候就要分析磁盘IO了。其他字段这里就不再解释了
查看IO负载
$ iostat -x 1
Linux 4.4.0-108-generic (www) 03/08/2018 _x86_64_ (32 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.02 0.00 0.01 0.00 0.00 99.97
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 1.12 0.01 0.79 0.19 13.85 35.18 0.00 0.11 3.11 0.08 0.04 0.00
dm-0 0.00 0.00 0.01 1.89 0.15 13.76 14.64 0.00 0.12 3.45 0.11 0.01 0.00
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 32.81 0.00 6.30 6.30 0.00 6.02 0.00
主要字段含义如下:
r/s 每秒读操作数。
w/s 每秒写操作数。
rsec/s 每秒从设备读取的扇区数量。
wsec/s 每秒向设备写入的扇区数量。
avgrq-sz I/O 请求的平均扇区数。
avgqu-sz I/O 请求的平均队列长度。
await I/O 请求的平均等待时间,单位为毫秒。
svctm I/O 请求的平均服务时间,单位为毫秒。
%util 处理 I/O 请求所占用的时间的百分比,即设备利用率。
查看网站的并发连接数
检查是否达到瓶颈,在Linux下使用以下命令即可分组查看各种连接状态:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}‘
解释:
返回结果示例:
LAST_ACK 5 (正在等待处理的请求数)
SYN_RECV 30
ESTABLISHED 1597 (正常数据传输状态)
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057 (处理完毕,等待超时结束的请求数)
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
使用这上面的命令是可以查看服务器的各种连接状态,其中ESTABLISHED 就是并发连接状态数。如果你不想查看到这么多连接状态,而仅仅只是想查看并发连接数,可以简化一下命令,即:
netstat -nat|grep ESTABLISHED|wc -l
2089
这个返回的数字就是当前并发的连接数的了。
以上是关于定位性能瓶颈的一些工具的主要内容,如果未能解决你的问题,请参考以下文章
Paddle模型性能分析工具Profiler:定位瓶颈点优化程序提升性能