linux系统性能排查命令

时间:2021-09-15 16:28:17

【top】

    命令可以动态查看当前系统的资源情况,以及占用资源的命令列表

    用法:  

              - ctrl + c / q : 停止此命令运行

              - c : 展示完整的命令

              - 【top -bn1】:可以不动态的展示当前系统的资源情况

              - 【uptime】:第一行的load average可以通过此命令看到

$ uptime
23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02

#第一个数值: 代表着1分钟的平均负载
#第二个数值:代表着5分钟的平均负载
#第三个数值:代表着15分钟的平均负载

#如果1分钟的平均负载很高,15分钟的很低 ==>系统正在执行高负载命令,大量消耗CPU

 

【dmesg】 ==> /var/log/dmesg

      命令可以快速查看系统启动过程中的内核日志信息,包括:系统设备信息、启动和操作过程中系统记录的任何错误和问题

      用法:

            - 【dmesg | more】: 打印出来的内容会很多,可以利用more来分页查看

             - 【dmesg | tail 】: 打印最后十行的日志

 

【vmstat 1 5】

       命令输出系统核心指标信息,1 5 表示1秒输出5次信息

       用法:

              - 【r】: 等待CPU资源的进程数,不包括等待IO的进程{数值如果大于CPU核数,就说明机器的CPU资源已经饱和}

              - 【free】: 系统可用内存(以K为单位)

              - 【si,so】:交换区swap写入和读取的数量,如果数值不等于0,那么机器物理内存已经不足

              - 【us,sy,id,wa,st】:分别表示用户时间(user)、系统(内核)时间(sys)、空闲时间(idle)、IO等待时间(wait)和被偷走的时间(stolen,一般被其他虚拟机消耗)。

                       这里的user + sys 结果特别大 ==》 CPU繁忙于执行命令

                                 wail 很大 ==》 则瓶颈可能在磁盘IO

 

【mpstat -P ALL 1】

         命令可显示CPU的个数,以及每一个CPU被占用的状况,

         如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。

 

【pidstat 1】

          输出进程的CPU占用率{会持续输出,并不会覆盖之前的数据}

          从这个命令中可以通过计算某个进程占用CPU的时间来推断占用了多少个CPU资源

 

【iostat -zx 1】

           查看机器磁盘IO情况

           用法:

                   - 【r/s, w/s, rkB/s, wkB/s】: 表示每秒读写次数和每秒读写数据量(KB)==》 这个值表示读写量,读写量过大,会引起性能问题

                   - 【await】: IO操作的平均等待时间,{单位:ms},此处代表应用程序和磁盘交互时,需要消耗的时间(包括IO等待和实际操作的耗时),这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障

                   - 【avgqu-sz】: 向设备发出的请求平均量,如果此数值大于1,可能是硬件设备已经饱和(部分前端设备支持并行写入)

                    - 【%util】:设备利用率,这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能(可以参照IO操作平均等待时间)。如果到达100%,说明硬件设备已经饱和。

                                   如果显示的是逻辑设备的数据,那么设备利用率不代表后端实际的硬件设备已经饱和。值得注意的是,即使IO性能不理想,也不一定意味这应用程序性能会不好,可以利用诸如预读取、写缓存等策略提升应用性能。

 

【sar -n DEV 1】

               查看网络设备的吞吐率

               这里需要了解网络设备的吞吐量上限,从这里可以判断是否网络设备已经饱和,无法承担更大的访问。

 

【sar -n TCP,ETCP 1】

               查看TCP连接状态

               参数:

                     -   active/s:每秒本地发起的TCP连接数,既通过connect调用创建的TCP连接;
      -   passive/s:每秒远程发起的TCP连接数,即通过accept调用创建的TCP连接;
      -   retrans/s:每秒TCP重传数量;

         TCP连接数可以用来判断性能问题是否由于建立了过多的连接,进一步可以判断是主动发起的连接,还是被动接受的连接。

    TCP重传可能是因为网络环境恶劣,或者服务器压力过大导致丢包。