zoukankan      html  css  js  c++  java
  • Linux性能查看与分析--命令行工具介绍

      本文介绍工作中常用的几个linux性能查看命令:top,sar,vmstat,iostat,pidstat等。

    1.top

      top是最常用的linux性能分析工具,它能够实时的显示系统中各个进程的资源占用情况。top命令的部分输出如下:

      top的交互命令有以下几个:

      (1)f 选择显示的列

      (2)o或O 改变列的显示顺序

      (3)l 切换显示平均负载和启动时间信息

      (4)m 切换显示内存信息

      (5)t 切换显示进程和CPU状态信息

      (6)c 切换显示命令名称和完整命令行

      (7)M 根据驻留内存大小进行排序k

      (8)P 根据CPU使用百分比大小进行排序

      (9)T 根据时间/累计时间进行排序

      (10)h 显示帮助信息

      (11)q 退出

      (12)数字1 显示所有cpu的负载情况

      top命令参数:

      top [-] [d] [p] [q] [c] [C] [S] [s] [n]

      d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
      p 通过指定监控进程ID来仅仅监控某个进程的状态。
      q该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
      S 指定累计模式
      s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
      i 使top不显示任何闲置或者僵死进程。
      c 显示整个命令行而不只是显示命令名

    2.sar

      sar周期性的对内存和CPU的使用情况进行采样。基本语法如下:

      sar [option] [<interval> [<count>]]  

      -A:所有报告的总和

      -u:输出CPU使用情况的统计信息

      -v:输出inode、文件和其他内核表的统计信息

      -d:输出每一个块设备的活动信息

      -r:输出内存和交换空间的统计信息

      -b:显示I/O和传送速率的统计信息

      -a:文件读写情况

      -c:输出进程统计信息,每秒创建的进程数

      -R:输出内存页面的统计信息

      -y:终端设备活动情况

      -w:输出系统交换活动信息

      -n:网络的统计信息

      -o:采样结果输出到文件

      例如:

      每10秒采样一次,连续采样3次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件test中 :sar -u -o test 10 3 

      查看二进制文件test中的内容:sar -u -f test

      每10秒采样一次,连续采样3次,观察核心表的状态:sar -v 10 3

      每10秒采样一次,连续采样3次,监控内存分页:sar -r 10 3

      每10秒采样一次,连续采样3次,监控内存分页:sar -B 10 3

      每10秒采样一次,连续采样3次,报告缓冲区的使用情况:sar -b 10 3

      每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态:sar -q 10 3

      每10秒采样一次,连续采样3次,监控系统交换活动信息:sar -W 10 3

      每10秒采样一次,连续采样3次,报告设备使用情况:sar -d 10 3 –p

      要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来

      怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看

      怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看

      怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

      淘宝有一个改进版的sar叫tsar,可以收集和报告性能和应用的数据,并保持到mysql里。

    3.vmstat

      vmstat可以统计CPU、内存使用情况、swap使用情况、I/O操作、上下文切换、时钟中断等信息。

      使用如:vmstat 1 3

    4.iostat

      iostat主要查看磁盘io信息。

      tps: 每秒钟发送到的I/O请求数.
      Blk_read /s: 每秒从设备读取的block数.
      Blk_wrtn/s: 每秒向设备写入的block数.
      Blk_read: 读入的block总数.
      Blk_wrtn: 写入的block总数

      使用:iostat -d 1 2

                  iostat -x 1 2

    5.pidstat

      是sysstat的组件之一,可以检测进程和线程的性能情况。

    6.ps

      进程查看工具。

      ps表示进程的5种状态码:

      D 不可中断 uninterruptible sleep (usually IO) 

      R 运行 runnable (on run queue) 

      S 中断 sleeping 

      T 停止 traced or stopped 

      Z 僵死 a defunct (”zombie”) process 

      ps参数:

      a  显示所有进程

      -a 显示同一终端下的所有程序

      -A 显示所有进程

      c  显示进程的真实名称

      -N 反向选择

      -e 等于“-A”

      e  显示环境变量

      f  显示程序间的关系

      -H 显示树状结构

      r  显示当前终端的进程

      T  显示当前终端的所有程序

      u  指定用户的所有进程

      -au 显示较详细的资讯

      -aux 显示所有包含其他使用者的行程 

      -C<命令> 列出指定命令的状况

      --lines<行数> 每页显示的行数

      --width<字符数> 每页显示的字符数

      --help 显示帮助信息

      --version 显示版本显示

      更多内容ps --help

      示例:

      1.显示所有进程信息

        ps -A

      2.显示指定用户信息

        ps -u root

      3.显示所有进程信息,包括命令行

        ps -ef

      4.将目前属于您自己这次登入的 PID 与相关信息列示出来

        ps -l

      5.列出目前所有的正在内存当中的程序

        ps -aux

      6.列出类似程序树的程序显示

        ps -axjf

    7.netstat

      网络连接状态查看工具。

      用netstat命令去统计服务器目前的网络连接状态
      netstat -n|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}'
      netstat -an | awk '/:80/{print $6}' | sort | uniq -c

    8.lsof

      文件描述符查看工具。

      查找打开文件最多的信息如下: 
      lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more
      查看各个进程打开的文件数据量:
       lsof -n |awk '{print $2} " " $3'|sort|uniq -c |sort -nr|more
    更多内容,查看各命令的help文档
  • 相关阅读:
    docker 会这些也够
    Linux 学会这些基本可以啦
    xxxxxxxxx
    Angular
    mongo
    node
    git clone 解决Permission Denied (publickey)问题
    vue项目如何刷新当前页面
    vue——动态路由以及地址传参
    vue 单页应用点击某个链接,跳转到新页面的方式
  • 原文地址:https://www.cnblogs.com/zhutianpeng/p/4248237.html
Copyright © 2011-2022 走看看