Top是Linux服务端研发的最常用命令之一,我们经常要关注线上服务器的状态。Top命令可以反应出当前机器的配置,用户进程,还有cpu,内存等使用量,以及load average负载。
机器的负载,cpu,内存等使用情况对该机器上运行的进程影响很大,在一个高负载的机器上运行的进程也很危险,长期高负荷运行的机器可能宕机,就像长期处于高压力下的人可能生病一样。
下面我们就来分析一下top命令的结果。
负载load average
上面这张图就是我截取机器上的一个top命令结果,最上面一行是总览up后面紧接的是机器持续运行的时间,对图中就是166天17小时17分钟。user表示用户账号数。
load average就是负载情况了,分别是最近1分钟,最近5分钟,最近15分钟的机器平均负载情况。一般来说,平均负载超过了机器核数就很高了,超过0.75*core(机器核数)就需要注意了。
任务Task
Task后面是机器进程相关信息,total是总进程数。running是正在运行中的进程,sleeping是休眠的进程,stopped是停止的进程,zombie是僵尸进程。
核Cpus
多核机器可以通过按1显示更多的cpu信息。
us表示用户占用的cpu百分比,sy则表示系统占用的。
ni表示用户进程改变过优先级的进程占用cpu。
id表示cpu idle即空闲比例,这个值越大说明机器越闲。
wa表示等待输入输出IO的cpu占比。
hi表示服务于硬件中断所耗费的时间。
si表示CPU软中断占用的时间
st表示虚拟机被hypervisor(虚拟机监视器)偷走的时间。
内存Mem
内存也是一个重要的指标。total是总机器内存,free是空闲的物理内存,used是被使用的物理内存,buff/cache表示用于内核缓存的内存量。
交换分区Swap
total表示总交换分区量,free表示空闲交换分区,used表示被使用的交换分区,avail表示可用的交换分区量。
其他
PID:进程id,process id。
USER:用户
PR:priority 优先级
NI: nice, 负值表示高优先级,正值表示低优先级,越大越好说话
VIRT:虚拟内存总量
RES:进程使用的,还未被换出的内存大小
SHR:共享内存大小
S:进程状态,D不可中断的睡眠状态,S睡眠,R运行
TIME:运行时间
COMMAND: 运行命令。
总结
top命令是linux机器很重要的命令,服务端程序员还可以配合free查看内存,df命令查看磁盘。
这个命令可以查看当前系统打开的文件句柄数,以及最大可以打开的文件句柄。这个命令也很重要,通常如果有bug的程序无限制的打开文件,导致文件句柄被占满,那么就可能导致无法登录机器,甚至宕机。
欢迎关注微信公众号『野狐』