[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 -u
和 sar -q
等来查看
狐疑内存存在瓶颈,可用 sar -B
、sar -r
和 sar -W
等来查看
狐疑I/O存在瓶颈,可用 sar -b
、sar -u
和 sar -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
值基本一致,所以它不包含buffer
和cache
的空间;kbmemused
:这个值和free
命令中的used
值基本一致,所以它包含buffer
和cache
的空间;%memused
:这个值是kbmemused
和内存总量(不包含swap)的一个百分比;kbbuffers
:这两个值就是free
命令中的buffer
;kbcached
:这两个值就是free
命令中的cache
;kbcommit
:保障以后零碎所须要的内存,即为了确保不溢出而须要的内存(RAM + swap);%commit
:这个值是kbcommit
与内存总量(包含swap)的一个百分比;kbactive
:流动内存量(以千字节计算)(最近应用的内存,通常不会被发出,除非相对必要);kbinact
:不流动内存量(以千字节计算的内存(最近应用的内存),更有资格被用于其余目标);kbdirty
:以KB为单位的内存量期待写入磁盘;
pidstat 命令
磁盘 IO
倡议排查程序
查看设施总体利用率状况
iostat -xt 1
查看是哪个过程在占用磁盘 IO
iotop
iostat 命令
疾速查看磁盘设施的以后应用忙碌水平
查看 CPU 及设施/分区的应用状况iostat [ options ] [ <interval> [ <count> ] ]iostat -xcdmt 1选项 -x: 显示扩大状态(蕴含 -c, -d, -k) -t: 显示每个报告产生时的工夫 -m: 以兆字节每秒为单位,而不应用块每秒 -k: 以千字节每秒为单位,而不应用块每秒 -c: 显示CPU应用状况 -d: 显示设施利用率
重点关注如下指标:
标示 | 阐明 |
---|---|
%iowait | CPU期待IO工夫占用CPU总工夫的百分比 |
Device | 监测设施名称 |
rMB/s | 每秒理论读取的大小,单位为KB |
wMB/s | 每秒理论写入的大小,单位为KB |
avgrq-sz | 需要的均匀大小区段 |
avgqu-sz | IO申请的均匀队列长度 |
await | IO申请均匀响应工夫(队列排队工夫+IO解决工夫),个别零碎 I/O 响应工夫应该低于 5ms,如果大于 10ms 就比拟大了 |
svctm | IO解决工夫,即寻道 + 旋转延迟时间; |
%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:退出
网络
倡议排查程序
查看网络总体应用状况
nload -u h eth0
查看是哪个过程占用网络
nethogs
查看是哪个 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 源提供.