一、TOP 命令
可以查看当前系统负载情况
1. 示例图
1. 展示面板说明
-
top (是任务队列信息,同 uptime 命令的执行结果)
- up [time] : 系统运行时间
- [number] users: 当前登录的用户
- load average: 系统(1/5/15)分钟内的负载情况
-
Tasks:系统任务状态
- total 进程总数
- running 正在运行的进程数
- sleeping 睡眠的进程数
- stopped 停止的进程数
- zombie 僵尸进程数
-
%CPU(s):CPU 状态
- [number] us: 用户空间占用CPU百分比(越小越好)
- [number] sy:内核空间占用CPU百分比
- [number] ni:用户进程空间内改变过优先级的进程占用CPU百分比
- [number] id: system idle process=处理器空闲时间百分比(越大越好)
- [number] wa:等待输入/输出的CPU时间百分比
- [number] hi:硬件CPU中断占用百分比
- [number] si:软中断占用百分比
- [number] st:虚拟机占用百分比
-
Kib Mem: 内存状态
- total 物理内存总量
- used 使用的物理内存总量
- free 空闲内存总量
- buffers 用作内核缓存的内存量
-
KiB Swap: 交换区状态
- total:交换区总量
- used 使用的交换区总量
- free 空闲交换区总量
- cached
3. 重点关照对象
(1)load average
系统负载均衡 (1 分钟内 5分钟内 15分钟内 的负载情况)最后一个越小越好,当三个值相加后除以3结果大于0.6表示需要注意服务器负担。大小一般不能大于系统CPU的个数。
(2)zombie: 消失进程 (这个如果不为0,就一定需要检查了)
(3)us + sy (当前用户占用资源和系统占用资源)
4. top 命令的操作选项
- P: 以CPU使用率排序,默认是此项
- M: 以内存使用率排序
- N:以PID排序
- q: 退出
5. top 命令的命令行参数选项
-d
秒数: 指定top命令每隔多少秒更新. 默认是3秒在top命令的交互模式当中可以还行的命令-i
: 是top不在显示任何闲置或者僵尸进程-p
: 通过指定监控进程ID来仅仅监控某个进程的情况
二、vmstat 命令
同top命令可以用来查看CPU状态另外也可以监控磁盘,内存状态,一般可以携带如下两个参数
- 第一个参数时间间隔数(单位秒)
- 第二个参数是采样的次数
1. 使用示例
2. vmstat 命令结果包含如下几个区域
- procs区域
- memory区域
- swap区域
- io区域
- system区域
- cpu区域
2.1 procs区域
(1)r: 运行和等待cpu时间片的进程数,列表示运行和等待cpu时间片的进程数
note:
这个值如果长期大于系统CPU的个数,说 明CPU不足,需要增加CPU,原则上1和的cpu的运行队列不要超过2,整个系统的运行队列不能超过总核数的两倍否则代表压力过大
(2)b: 等待资源的进程数,比如正在等待(磁盘/网络)I/O
2.2. memory区域
2.3. swap区域
2.4. io区域
2.5. system区域
2.6. cpu区域
- (1) cs: 上下文切换
- (2) us(user) : 用户进程小号cpu时间的百分比
- (3) sy(system): 内核进程消耗的CPU时间百分比
- (3) id: 处于空闲的CPU百分比,越高越好
- (3) wa(wait):系统等待IO的CPU时间百分比
- (3) st: 来自一个虚拟机窃取的CPU时间的百分比
注意:
(1)us值高,用户进程消耗cpu时间多,如果长期大于50%,优化程序,us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法。
(2) sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。
(3) us+sy参考值 80%,如果us+sy 大于80% ,说明cpu可能即将不足
三、free 命令
free 命令用来查看内存情况
1. 命令演示
2. 常用参数
-m
, --mega show output in megabytes-g
, --giga show output in gigabytes-h
, --human show human-readable output
3. 命令说明
total: 总内存
free: 空余内存
used: 使用内存
shared
buff/cache
availabel: 可用内存
4. 注意点(一般情况下)
- (1)应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能.
- (2)应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存
- (3)20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。
四、iostat 命令
可以用来监控磁盘情况
1. 使用演示
iostat -xdk 1 5 : 1秒钟采样一次, 一共采用5次
2. 参数说明
2.1 -x 参数 用于显示和io相关的扩展数据
- rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge了
- rsec/s:每秒读取的扇区数
- wsec/:每秒写入的扇区数
- rKB/s:The number of read requests that were issued to the device per second
- wKB/s:The number of write requests that were issued to the device per second
- avgrq-sz 平均请求扇区的大小
- avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好
- await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。
- svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长, 系统上运行的应用程序将变慢。
- %util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度
- 。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
2.2 -d 参数显示设备(磁盘)使用状态
- tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)
- kB_read/s:每秒从设备(drive expressed)读取的数据量
- kB_wrtn/s:每秒向设备(drive expressed)写入的数据量
- kB_read:读取的总数据量
- kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes
Note:
“一次传输"意思是"一次I/O请求”。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。
2.3 -k 参数某些使用block为单位的列强制使用Kilobytes为单位
2.3 -c 参数用来获取cpu部分状态值
4. 注意点
svctm 的值与await 的值很接近,表示几乎没有I/O等待,磁盘性能越好
rkB/s ,wkB/s 根据系统引用不同,会有不同的值,但有规律遵循:长期,超大数据读写,肯定不正常,需要优化程序读取.
如果await 的值远高于svctm 的值,则表示IO队列等待时间太长,需要优化程序或更换更优质的磁盘.
行解释
如果util 接近100%时,表示磁盘带宽跑满了. 需要优化程序或者增加磁盘.