说到服务器性能指标,永远离不开CPU、Memory、IO等。
一、top命令(centOS7)
第一行 top:
-18:39:57 | 当前系统时间 |
up 6 min | 持续运行时间 |
load average | 系统前1分钟,前5分钟,前15分钟的平均负载 |
load average理解:假如如现在的CPU是4核,当前running的进程总数为4,那么此时此刻的负载就是4.00 ,只要这个load average的值不超过cup的总核数就代表不是满负荷状态,CPU运行通畅;反之,超过CPU的核数就属于负荷状态了,需要优化;load average前1分钟>前5分钟和15分钟,表示系统负载越来越重,反之则表示系统负载降低。
查询CPU的信息:lscpu
查询CPU的核数命令:grep 'model name' /proc/cpuinfo | wc -l
第二行 tasks:
98 total | 总进程(任务)数 |
1 running | 运行状态进程数 |
97 sleeping | 睡眠状态进程数 |
0 stopped | 停止状态进程数 |
0 zombie | 僵尸状态进程数 |
第三行 %CPU(s):
一般来说,物理空闲CPU,我们看id的值(空闲CPU百分比)就可以,如图idle的值>20%,我们就认为CPU运行流畅,<20%我们就认为CPU负载过重,查看us、sy、wa的值,us过高就是用户进程优化,sy过高就需要提升服务器性能了,wa过高就要关注磁盘IO或者网络IO。
当然也有通过 us+sy 来判断的,这个就是CPU的使用率了,80%作为参考值,>80%CPU负载过重,<80%CPU运行流畅。这种计算方式是忽略了等待进程占用CPU的空间的,其实都是可以的,个人认为idle的值更准确一点。
0.0 us | 用户(user)进程占用CPU空间的百分比 |
0.3 sy | 内核(systerm)进程占用CPU空间的百分比 |
0.0 ni | 调整优先级(niced)进程占用CPU空间的百分比 |
99.3 id | 空闲(idle)CPU的百分比 |
0.3 wa | IO等待(wait)进程占用CPU空间的百分比 |
0.0 hi | 硬件中断(Hardware Interrupt)占用CPU的百分比 |
0.0 si | 软件中断(Software Interrupt)占用CPU的百分比 |
0.0 st | 偷走(steal)进程占用CPU的百分比(仅虚拟机有这种情况) |
第四行:KiB Mem:
一般比较关注的就是free和total,物理内存空闲率free/total,free/total的值一般>20%就代表内存资源充足,<20%表示内存资源紧缺。
1863004 total | 总物理内存(容量),单位KB |
1427916 free | 空闲内存 |
235340 used | 已使用内存 |
199848 buff/Cache | 缓冲内存 |
第五行:KiB Swap:
2097140 total | 总交换分区内存(容量) |
2097140 free | 闲置交换分区内存 |
0 used | 已使用交换分区内存 |
1473568 avail Mem | 可用的缓冲交换区内存 |
第七行:列表:
PID | 进程ID |
USER | 进程所有者 |
PR | 进程的实际优先级(priority),rt表示任务正在调度优先级下运行 |
NI | 进程的调度优先级nice,-20拥有最高优先级 |
VIRT | 进程使用的虚拟内存(virtual) |
RES | 进程使用的驻留内存(resident) |
SHR | 进程使用的共享内存(share) |
S | 进程状态(state):R-运行态,S-睡眠态,Z-僵尸态,T-被跟踪已停止,D-不可中断的睡眠态 |
%CPU | 进程使用的CPU占比 |
%MEM | 进程使用的物理内存占比 |
TIME+ | 进程使用CPU的时间,单位(分钟:秒) |
COMMAND | 进程名称(命令行/名) |
二、补充其他辅助命令
查看内存 free -h
查看负载 uptime
查看分区:fdisk -l
查看磁盘使用情况: df -h
查看进程 ps -ef
整体查看(每3秒刷新1次,共刷新5次):vmstat 3 5
procs | r | 表示正在运行的进程数,若r值长期大于CPU个数,说明CPU不足,需要增加CPU个数 |
b | 等待资源的进程数,如IO、内存交换等 | |
memory | swpd | 交换分区的内存(KB) |
free | 空闲内存 | |
buff | 缓冲内存,对块设备的读写,需要缓冲 | |
cache | 文件系统cache,频繁访问的文件都会被cached,如果cached的值较大,说明cached文件数较多,如果此时IO中的bi值较小,说明文件系统效率高 | |
swap | si | 从磁盘写入内存,就是交换分区写入内存的大小(KB/s) |
so | 从内存写入磁盘,就是内存写入交换分区的大小,一般情况下,si、so的值都为0,若si、so的值长期不为0,则说明内存不足,需要增加系统内存 | |
IO | bi | 每秒读取的块数,现在的linux版本块的大小为1024bytes |
bo | 每秒写入的块数, | |
system | in | 每秒中断数,包括时钟中断,值越大,cpu中的sy就越大 |
cs | 每秒上下文切换数,值越大,cpu中的sy就越大 | |
cpu | us | 用户态占用CPU时间的百分比 |
sy | 内核态占用CPU时间的百分比 | |
id | 空闲时间(包括等待时间) | |
wa | 等待IO时间,wa过高说明IO等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的宽带出现瓶颈,查看磁盘IO或者网络IO | |
st | 偷走进程占用CPU时间的百分比(仅虚拟机有这种情况) |