充分利用好 linux 系统自带的系统监控工具可以快速便捷地了解系统性能以及其它事项,方便对系统进行分析和调试
学习文章:每个系统管理员都要知道的 30 个 Linux 系统监控工具 、通过vmstat学习CPU和进程性能监控
【1】top - 监控进程命令
命令 top
的实时监控图
1. 认识top
top
(不同系统名字可能不一样,如 IBM 的 aix 中叫 topas
) 命令显示系统的进程,提供实时动态视图(即对进程活动进行实时监控),默认情况下,top
命令显示 CPU 占用率最高的进程并每 5s 更新一次。
2. 主要作用
主要用来监控系统实时负载率、进程的资源占用率及其它各项系统状态属性是否正常。
3. 查看进程监控
终端输入命令 top
输出认识
- 第一行:显示系统级的负载,平均负载有3个输出,分别代表在过去的1、5、15分钟时的平均负载。这部分的输出和命令 uptime 一致。
- 第二行:显示关于进程的一些大体信息比如当前的进程总数、运行或睡眠进程的数量。其中,标亮的进程列表中的
S
列对应的值为R
代表running
,如果为S
则为sleeping
。 - 第三行:显示
cpu
的一些负载信息,其中,特别是%id
和%wa
这两个指标尤为重要,很多的性能问题中,如果%id
过低,%wa
也很低,说明cpu
使用率很高,可能有一些sql
语句消耗了大量的cpu
资源,如果%wa
很高的话,很可能是系统 IO 出现了问题。 - 第四行:显示内存的使用情况,如果内存使用情况存在明显的异常,可以通过标亮的进程信息中查找
%MEM
消耗比较高的进程。 - 第五行: 显示交换区的情况,如果内存足够或者系统负载不高,这个部分的数据没有什么大的变化。
Notte:关于 CPU 的状态信息参数说明
%Cpu(s): 9.5 us, 4.2 sy, 0.0 ni, 74.5 id, 11.7 wa, 0.0 hi, 0.1 si, 0.0 st
us
:用户空间占用CPU百分比sy
:内核空间占用CPU百分比ni
:用户进程空间内改变过优先级的进程占用CPU百分比id
:空闲 CPU 百分比wa
:等待输入输出的 CPU 时间百分比hi
:硬盘中断si
:软件中断`
4. 常用快捷键
deepin 的 top
命令的 z
快捷键黑白切换模式
快捷键用法说明
- t: 是否显示汇总信息
- m: 是否显示内存信息
- A: 根据各种系统资源的利用率对进程进行排序,有助于快速识别系统中性能不佳的任务。
- b: 打开或者关闭表中重要数字的加粗显示
- c: 直接输入
top -c
或者(输入top
,然后输入快捷键c
)会切换显示进程的命令名或者是完成的命令行输入信息。 - f: 进入 top 的交互式配置屏幕,用于根据特定的需求而设置 top 的显示。
- o: 如果想定制显示
top
命令的输出顺序,比如默认是按照pid
、user
的顺序来显示进程信息的,如果你想根据user
、pid
来显示,可以使用c
快捷键。输入top
,然后在显示屏幕上输入o
,就会弹出一个交互界面。如果想先显示列 USER,就输入E
,然后回车,结果就进行了重排。 - r: 调整优先级(renice)
- k: 杀掉进程(kill)
- z: 切换彩色或黑白模式
【2】vmstat - 虚拟内存统计
1.认识 vmstat
vmstat [options] [delay [count]]
vmstat
命令是最常见的 Linux/Unix 监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率、内存使用、虚拟内存交换情况以及 IO 读写情况。
vmstat
命令的 man
页
2. 主要功能
vmstat 命令报告有关进程、内存、分页、块 IO、中断和 CPU 活动等信息。
3. 查看内存统计
vmstat
监控
Note:关于参数说明
procs ———–memory———- —swap– —–io—- -system– ——cpu—–
Procs
r b swpd free buff cache si so bi bo in cs us sy id wa st
1.r
: 处于运行队列中的内核线程数目(进程数),这个值也可以判断是否需要增加CPU。(长期大于1)
2.b
:置于等待队列(等待资源、等待输入/输出)的内核线程数目; 处于block 队列中不可中断的进程数
Memory
3.swpd
: 可用的虚拟交换内存,如果swpd
的值不为 0,但是SI
,SO
的值长期为0,这种情况不会影响系统性能
4.free
:空闲物理内存大小
5.buff
:用作缓冲的内存大小
6.cache
:用作缓存的内存大小,如果cache
值很大的时候,说明cache
处的文件数多,如果频繁访问到的文件都能被cache
处,那么磁盘的读IO bi会非常小。
Swap
7.si
: 从磁盘到内存的交换页数目 (单位/S)
8.so
: 从交换内存到磁盘的交换页数目(单位/S)
IO
9.bi
: 接收到块设备的块数(块/秒)
10.bo
: 发送到块设备的块数(块/秒)
System
11.in
: 每秒中断数,包括时钟中断
12.cs
: 每秒上下文切换数
CPU
13.us
: 所有进程用户态消耗CPU的时间百分比。us值比较高时,说明进程用户态消耗的CPU时间多,如果长期大于50%,需要考虑优化应用程序
14.sy
: 内核系统进程执行时间百分比(system time)。sy
值比较高时,说明进程内核态消耗的 CPU时间多;如果us+sy
超过80%
,就表明CPU资源存在不足。
15.id
: CPU 空闲时间百分比
16.wa
: IO等待时间百分比
17.st
: 虚拟机占用 CPU 时间百分比。如果wa
值超过20%
,说明IO
等待严重。st
仅在 Linux 系统vmstat
中显示
4. 选项(options)
选项用法说明
- a:显示活动和非活动的页
- f:显示启动后创建的进程总数
- m:显示
slab
信息 - n:头信息仅显示一次
- s:以表格方式显示事件计数器和内存状态
- d:显示磁盘相关统计信息
- p:显示指定磁盘分区统计信息
- S:输出信息的单位。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
- V:显示
vmstat
版本信息。
5.参数
- delay:刷新时间间隔。如果不指定,只显示一条结果。
- count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
6.使用实例
实例一:一般 vmstat
通过两个数字参数来完成,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,
vmstat 2 1
实际上,在应用过程中,常常习惯在一段时间内一直监控,不想监控直接结束 vmstat
实例二:显示活跃和非活跃内存
vmstat -a 2 3
使用 -a
选项显示活跃和非活跃内存时,所显示的内容增加 inact
和 active
。
字段补充说明
Memory(内存):
inact: 非活跃内存大小(当使用-a
选项时显示)
active: 活跃的内存大小(当使用-a
选项时显示)
实例三:查看系统已经 fork 了多少次
vmstat -f