定位性能瓶颈的一些工具

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

这个返回的数字就是当前并发的连接数的了。

以上是关于定位性能瓶颈的一些工具的主要内容,如果未能解决你的问题,请参考以下文章

Python性能分析工具Profile

使用 profile 进行python代码性能分析

Paddle模型性能分析工具Profiler:定位瓶颈点优化程序提升性能

Paddle模型性能分析工具Profiler:定位瓶颈点优化程序提升性能

java性能问题排查提效脚本工具

一款性能调优神器,1分钟定位性能瓶颈!!!