[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 -u
09:50:01 AM CPU %user %nice %system %iowait %steal %idle
10:00:01 AM all 1.56 0.00 0.75 0.04 0.00 97.65
10:10:01 AM all 10.66 0.00 5.20 0.09 0.00 84.05
10:20:01 AM all 55.09 0.00 25.19 0.07 0.00 19.65
10:30:01 AM all 49.52 0.00 22.84 0.09 0.00 27.55
10:40:01 AM all 43.41 0.00 20.48 0.11 0.00 36.00
10:50:01 AM all 39.49 0.00 19.01 0.12 0.00 41.38
Average: 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 -q
09:50:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
10:00:01 AM 5 338 0.24 0.14 0.12 0
10:10:01 AM 11 416 3.90 1.54 0.71 0
10:20:01 AM 15 473 11.36 11.03 6.26 1
10:30:01 AM 7 474 8.14 9.77 8.00 0
10:40:01 AM 12 473 6.39 7.26 7.53 0
10:50:01 AM 15 453 4.53 5.88 6.94 0
Average: 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 -r
09:50:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
10:00:01 AM 8902892 23876908 72.84 2080 12331564 7143804 21.79 7354428 7190496 224
10:10:01 AM 8496696 24283104 74.08 2080 12394360 7846800 23.94 7685000 7169248 1980
10:20:01 AM 7986260 24793540 75.64 2080 12430912 8486280 25.89 7984868 7146152 2120
10:30:01 AM 7804560 24975240 76.19 2080 12488140 8087856 24.67 7975640 7158088 1592
10:40:01 AM 7588988 25190812 76.85 2080 12588572 8190552 24.99 7976948 7214956 1388
10:50:01 AM 7534756 25245044 77.01 2080 12639652 7722896 23.56 7879740 7228132 1176
Average: 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 源提供.