[TOC]

综合状态

top 命令

显示过程详细信息top [选项]选项    -p <pid>        只查看指定过程号的信息    -u, -U <user>    只查看属于指定用户的过程信息    -d <sec>        设置主动刷新延迟时间, 默认是每3秒主动刷新    -b                批量操作模式, 罕用于脚本. 个别与 -n 指定输入次数, -d 指定间隔时间    -n                top 最大输入次数运行界面可执行的命令    展现数据    1        具体展现每个逻辑cpu的应用状况.    c        展现具体的 Command 列        m        切换内存信息展现(在具体数值和百分比之间切换)        E        切换内存(Mem 和 Swap行)的单位    e        切换内存(VIRT, RES, SHR)的单位(byte, m, g, t, p)        排序    M        CPU应用从大到小    P        内存应用从大到小        交互    s <刷新提早>    自定义刷新延迟时间, 默认是每3秒主动刷新.
字段解释第一行    top - 22:39:55         up 7:07,         2 users, load average: 1.39, 1.22, 1.16                      距本次开机已运行时长           均匀负载       1分钟 5分钟  15分钟                      第二行(以后显示的过程数量及运行状态)    Tasks: 202 total,        3 running,          199 sleeping,    0 stopped,    0 zombie          以后共202个过程        有3个处于运行状态    199个处于休眠状态第三行(cpu应用状况)    %CPU(s): 18.3 us,                29.0 sy,            0.0 ni,     52.1 id,    0.2 wa,        0.0 hi,    0.4 si,    0.0 st            cpu用于用户计算的比例     用于过程状态交互的比例            闲暇比例    IO期待比例第四行(内存状态)    KiB Mem:    1361956 total,    145060 free,    689800 used,    527096 buff/cache                总内存量         未被应用的内存    已应用的内存        用于读写缓存的内存                第五行(替换分区状态)    Kib Swap:    2097148 total,    2077948 free,    19200 used.             386368 avail Mem                替换分区大小                        已应用的替换分区        可用内存数量.第六行    PID    USER    PR                    NI                VIRT    RES    SHR     S      %CPU    %MEM    TIME+            COMMAND                由内核管制(受NI影响)    过程优先级(NICE)                    状态                     过程理论运行工夫                                                            均匀负载: 掂量零碎的忙碌水平        现实状态:每个cpu上都有一个沉闷过程,即均匀负载数等于cpu数        过载经验值:均匀负载高于cpu数量70%的时候        第六行的    RES: 常驻内存, 即虚拟内存理论映射到物理内存的大小.    SHR: 占用的内存中属于共享内存的大小. 比方一些内部动静库仅会在内存中加载一份, 多个过程在其虚拟内存空间中这部分地址理论就映射到同一块物理内存地址.          也就是要计算独自某个过程占用的内存大小, 应该用 RES - SHR          这部分可参考: https://www.orchome.com/298          若是将共享内存占用的内存大小平摊给依赖它的过程, 此时各个过程占用内存 PSS = RES + SHR/共享过程数量          能够装置 smem 以不便查看过程的 PSS 值.         S: 过程的状态, 其可能的取值如下            T        stopped 状态            R        running 状态            S        sleeping 状态

ps 命令

ps(process status)

查看以后运行的过程的一个快照ps [选项]罕用示例    ps -ef            ps -eLf        查看所有线程信息(会包含LWP和NLWP列)    列解释    UID        无效用户id    PID        过程号    PPID    父过程号    C    STIME        TTY        执行该过程的终端. pts 是虚构终端, tty 是字符终端(init 3).    TIME    过程运行工夫(该值不具备参考价值)        LWP        轻量级过程(线程)    NLWP    选项    基本参数    -A, -e            显示所有过程(默认只能查看到以后终端下的过程. 要了解, 过程是树形构造的.)    -a                显示归属在终端下的所有过程    -p <过程号>      只显示指定过程号的相干信息    -C <过程名>                  过滤    -U <user>        # 依据创立过程的用户来筛选    -u <user>        # 依据过程所属用户来筛选(和 -U 是有区别的)    -C <command>    # 依据过程执行的命令(不蕴含参数)来准确匹配    -L <pid>        # 查看特定过程的所有线程        输入格局    -f                # 具体输入    -F                # 更具体输入    -o                # 自定义字段, 可应用的字段如下                    # pid,user,args, cmd, tty, comm, command, fname, ucmd, ucomm, lstart, bsdstart, start 等    u                # 面向用户的字段, 蕴含 %CPU, %MEM 等信息        排序    --sort [-+]<item>    # + 示意从小到大排序(默认)                        # - 示意从大到小排序                        # 以下能够混合应用, 比方 --sort -pcpu,+pmem                        # pcpu        按 cpu 应用排序                        # pmem        按内容使用率排序    罕用    规范语法 - 查看所有过程信息    ps -e        # 简略信息    ps -ef        # 详细信息    ps -eF        # 残缺信息(蕴含内存占用等)    ps -e u        # 面向用户的信息(蕴含内存占用, CPU应用等)        BSD语法 - 查看所有过程信息    ps ax        # 简略信息    ps aux        # 残缺信息        显示过程的树形构造    ps -ejH    ps axjf    输入列字段    PID        过程ID    TTY        所在终端    TIME    命令所占用的 CPU 解决工夫    CMD        过程所运行的命令
参考: https://blog.csdn.net/baidu_3...

sar 命令

查看零碎综合状态sar [选项] [<interval>  <count>]            采样距离    采样次数示例    sar -u 1 10    sar -r 1 10    sar -b 1 10    sar -dp 1 10        # 查看所有块设施的读写状况, 每秒采样1次, 共采样10次.选项    文件    -f <file>    # 从指定文件(二进制格局)获取数据起源(若未指定采样距离, 默认是当天的统计信息)                # -f /var/log/sysstat/sa02                # -f /var/log/sa/sa02            # Centos 6    -o <file>    # 指定采样距离后, 将采样数据写入指定文件(二进制格局)        工夫过滤    -s <hh:mm:ss>    # 指定天的开始工夫(不蕴含, 因而默认需往前推10分钟)    -e <hh:mm:ss>    # 指定天的完结工夫    资源    -u              # 报告CPU利用率状况, 可用 ALL 参数来输入更多字段    -q             # 报告工作队列长度和均匀负载(1,5,15)    -r             # 输入内存和替换空间的统计信息    -b             # 总体IO    -d             # 通常配合 -p. 报告每一个块设施的活动状态.            显示格局    -p             # 通常配合 -d. 打印出块设施名, 而非默认的 "device m-n" 格局.

零碎默认保留最近28天的日志, 默认地位 /var/log/sa/

  • sa 二进制数据(应用 sar -f 读取数据)
  • sar 文本数据

sar -n DEV 输入后果阐明

IFACE:LAN接口rxpck/s:每秒钟接管的数据包txpck/s:每秒钟发送的数据包rxbyt/s:每秒钟接管的字节数txbyt/s:每秒钟发送的字节数rxcmp/s:每秒钟接管的压缩数据包txcmp/s:每秒钟发送的压缩数据包rxmcst/s:每秒钟接管的多播数据包rxerr/s:每秒钟接管的坏数据包txerr/s:每秒钟发送的坏数据包coll/s:每秒抵触数rxdrop/s:因为缓冲充斥,每秒钟抛弃的已接管数据包数txdrop/s:因为缓冲充斥,每秒钟抛弃的已发送数据包数txcarr/s:发送数据包时,每秒载波谬误数rxfram/s:每秒接管数据包的帧对齐谬误数rxfifo/s:接管的数据包每秒FIFO过速的谬误数txfifo/s:发送的数据包每秒FIFO过速的谬误数

配置 /etc/sysconfig/sysstat

# 保留的历史文件(单位是天), 超过28天的则会分目录寄存HISTORY=28

详解

狐疑CPU存在瓶颈,可用 sar -usar -q 等来查看

狐疑内存存在瓶颈,可用 sar -Bsar -rsar -W 等来查看

狐疑I/O存在瓶颈,可用 sar -bsar -usar -d 等来查看

CPU 应用状况 -u

# sar -u09:50:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle10:00:01 AM     all      1.56      0.00      0.75      0.04      0.00     97.6510:10:01 AM     all     10.66      0.00      5.20      0.09      0.00     84.0510:20:01 AM     all     55.09      0.00     25.19      0.07      0.00     19.6510:30:01 AM     all     49.52      0.00     22.84      0.09      0.00     27.5510:40:01 AM     all     43.41      0.00     20.48      0.11      0.00     36.0010:50:01 AM     all     39.49      0.00     19.01      0.12      0.00     41.38Average:        all     33.19      0.00     15.53      0.09      0.00     51.20
  • %user: 用户空间的CPU应用
  • %nice: 扭转过优先级的过程的CPU使用率
  • %system: 内核空间的CPU使用率
  • %iowait: CPU期待IO的百分比
  • %steal: 虚拟机的虚拟机CPU应用的CPU
  • %idle: 闲暇的CPU

情景:

  • %iowait 太高, 则示意 I/O 存在瓶颈
  • %idle 太低, 则示意 CPU 使用率高

队列长度与均匀负载 -q

# sar -q09:50:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked10:00:01 AM         5       338      0.24      0.14      0.12         010:10:01 AM        11       416      3.90      1.54      0.71         010:20:01 AM        15       473     11.36     11.03      6.26         110:30:01 AM         7       474      8.14      9.77      8.00         010:40:01 AM        12       473      6.39      7.26      7.53         010:50:01 AM        15       453      4.53      5.88      6.94         0Average:           11       438      5.76      5.94      4.93         0

输入内容详解:

  • runq-sz:运行队列的长度(期待运行的过程数);
  • plist-sz:过程列表中过程(processes)和线程(threads)的数量;
  • ldavg-1:最初1分钟的零碎均匀负载;
  • ldavg-5:过来5分钟的零碎均匀负载;
  • ldavg-15:过来15分钟的零碎均匀负载;
  • blocked:以后阻塞的过程数量,在期待IO实现;

输入内存和替换空间 -r

# sar -r09:50:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty10:00:01 AM   8902892  23876908     72.84      2080  12331564   7143804     21.79   7354428   7190496       22410:10:01 AM   8496696  24283104     74.08      2080  12394360   7846800     23.94   7685000   7169248      198010:20:01 AM   7986260  24793540     75.64      2080  12430912   8486280     25.89   7984868   7146152      212010:30:01 AM   7804560  24975240     76.19      2080  12488140   8087856     24.67   7975640   7158088      159210:40:01 AM   7588988  25190812     76.85      2080  12588572   8190552     24.99   7976948   7214956      138810:50:01 AM   7534756  25245044     77.01      2080  12639652   7722896     23.56   7879740   7228132      1176Average:      8052359  24727441     75.43      2080  12478867   7913031     24.14   7809437   7184512      1413

输入内容详解:

  • kbmemfree:这个值和free命令中的free值基本一致,所以它不包含buffercache的空间;
  • kbmemused:这个值和free命令中的used值基本一致,所以它包含buffercache的空间;
  • %memused:这个值是kbmemused和内存总量(不包含swap)的一个百分比;
  • kbbuffers:这两个值就是free命令中的buffer
  • kbcached:这两个值就是free命令中的cache
  • kbcommit:保障以后零碎所须要的内存,即为了确保不溢出而须要的内存(RAM + swap);
  • %commit:这个值是kbcommit与内存总量(包含swap)的一个百分比;
  • kbactive:流动内存量(以千字节计算)(最近应用的内存,通常不会被发出,除非相对必要);
  • kbinact:不流动内存量(以千字节计算的内存(最近应用的内存),更有资格被用于其余目标);
  • kbdirty:以KB为单位的内存量期待写入磁盘;

pidstat 命令

磁盘 IO

倡议排查程序

  1. 查看设施总体利用率状况

    iostat -xt 1
  2. 查看是哪个过程在占用磁盘 IO

    iotop

iostat 命令

疾速查看磁盘设施的以后应用忙碌水平

查看 CPU 及设施/分区的应用状况iostat [ options ] [ <interval> [ <count> ] ]iostat -xcdmt 1选项    -x: 显示扩大状态(蕴含 -c, -d, -k)    -t: 显示每个报告产生时的工夫        -m: 以兆字节每秒为单位,而不应用块每秒    -k: 以千字节每秒为单位,而不应用块每秒    -c: 显示CPU应用状况    -d: 显示设施利用率

重点关注如下指标:

标示阐明
%iowaitCPU期待IO工夫占用CPU总工夫的百分比
Device监测设施名称
rMB/s每秒理论读取的大小,单位为KB
wMB/s每秒理论写入的大小,单位为KB
avgrq-sz需要的均匀大小区段
avgqu-szIO申请的均匀队列长度
awaitIO申请均匀响应工夫(队列排队工夫+IO解决工夫),个别零碎 I/O 响应工夫应该低于 5ms,如果大于 10ms 就比拟大了
svctmIO解决工夫,即寻道 + 旋转延迟时间;
%util磁盘忙碌水平。 例如,如果统计距离 1 秒,该设施有 0.8 秒在解决 I/O,而 0.2 秒闲置,那么该设施的 %util = 0.8/1 = 80%;

iotop 命令

疾速查看各个过程对于磁盘 IO 的读写状况

iotop选项     -d SEC, --delay=SEC        #设置显示的距离秒数,反对非整数值        -p PID, --pid=PID        #只显示指定PID的信息    -u USER, --user=USER    #显示指定的用户的过程的信息    -o, --only                #显示过程或者线程实际上正在做的I/O,而不是全副的,能够随时切换按o    -a, --accumulated        #显示从iotop启动后每个线程实现了的IO总数        # 非交互模式    -b, --batch            #运行在非交互式的模式    -t, --time            # batch模式, 在每一行前增加一个以后的工夫    -n NUM, --iter=NUM        #在非交互式模式下,设置显示的次数,    # 比拟少用的选项    --version            #显示版本号    -h, --help            #显示帮忙信息    -P, --processes        # 只显示过程(默认会展现所有的线程)  (倡议以默认的查看所有线程的形式, 否则会有脱漏)    -k, --kilobytes        #以千字节显示(默认是依照 human 形式)    -q, --quiet            #suppress some lines of header (implies --batch). This option can be specified up to three times to remove header lines.    -q     column names are only printed on the first iteration,    -qq    column names are never printed,    -qqq   the I/O summary is never printed.操作按键    a: 显示累积使用量 (--accumulated)    o: 只显示有io的过程/线程 (--only)    p: 过程/线程显示切换 PID/TID, 默认是 TID (--processes)        i:扭转线程的优先级    r:反向排序    应用left和right扭转排序    q:退出 

网络

倡议排查程序

  1. 查看网络总体应用状况

    nload -u h eth0
  2. 查看是哪个过程占用网络

    nethogs
  3. 查看是哪个 ip:port 在占用网络

    iftop -i eth0 -nNPB

    须要依据端口号来判断.

nload 命令

查看总体带宽应用状况nload [选项] [<device>]阐明    不指定 <device> 时会显示所有网络设备选项    -t <interval>                # 刷新距离(毫秒), 默认是 500毫秒, 设置小于100毫秒时会不准确.    -u h|H|b|B|k|K|m|M|g|G        # 每秒的流量单位, 默认是 k.                                # h     auto, human readable                                # b        Bit/s                                                                # k        kBit/s                                # m        MBit/s                                # g        GBit/s                                # 大写的 bkmg 是用 Byte 为单位, 而非 Bit.        -U h|H|b|B|k|K|m|M|g|G        # 累计流量单位, 默认是 M.

nethogs

依照过程统计流量nethogs [选项] [device [device ...]]运行时交互    m        # 批改单位    r         # 按流量排序    s         # 按发送流量排序    q         # 退出命令提示符选项|参数    -v <mode>    # 切换显示单位,默认是默认是KB/s(0示意 KB/s,1示意KB,2示意B,3示意MB)        -c            # 检测次数(前面间接跟数字)    -a            # 检测所有的设施    -d            # 提早更新刷新速率,以秒为单位。默认值为 1.      -t            # 跟踪模式.      -b            # bug 狩猎模式 — — 意味着跟踪模式.      -V             # 显示版本信息,留神是大写字母V.      -p             # 混合模式(不举荐).      device        # 要监督的设施名称. 默认为 eth0  

iftop 命令

依照 ip:port 统计流量iftop [选项]选项    网卡    -i <网卡>      # 指定只解析网络接口    主机名    -n            # ip不解析成域名        端口    -P            # 显示通信单方的端口号    -N            # 端口号不解析成服务名        -B            # 应用 byte 而不是默认的 bit    输入后果解释    第三列            51Kb         40.0Kb         22.0Kb        本机    2s             10s             40s    的均匀流量
epel 源提供.