top命令详解
对于程序员来说比较头疼的问题就是测试环境好好的程序在线上运行的时候突然出现内存或者cpu飚高的问题
排查问题的时候首先就敲一个top命令查看一下,那么top命令查出来的1数值分别是什么含义
cpu
第一行 cpu实时占用率
最醒目的是load average参数,后面分别跟着三个值,代表过去的1分钟,5分钟,15分钟的cpu占用率的统计值。
一般情况load average的数值不超过机器的总物理核数就问题不大。
飚高的可能性有cpu进行密集计算,或者io导致运行队列堵了,具体要结合另外两行的数值做综合分析
第二行 进程
第三行 cpu占用详情
us: 用户进程占CPU的使用率
sy: 系统进程占CPU的使用率
ni: 用户进程空间改变过优先级
id: 空闲CPU占用率
wa: 等待输入输出的CPU时间百分比
hi: 硬件的中断请求
si: 软件的中断请求
st: steal time
比较常用的就是us和sy这两个参数,us
第四五行 内存信息
五行以下
PID:进程id
USER:进程所有者
PR:优先级。数值越大优先级越高
NI:nice值,负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量
SWAP:进程使用的虚拟内存中被换出的大小
RES:进程使用的、未被换出的物理内存大小
SHR:共享内存大小
SHR:共享内存大小
S:进程状态。D表示不可中断的睡眠状态;R表示运行;S表示睡眠;T表示跟踪/停止;Z表示僵尸进程。
%CPU:上次更新到现在的CPU占用百分比 ;
%MEM:进程使用的物理内存百分比 ;
TIME+:进程使用的CPU时间总计,单位1/100秒;
COMMAND:命令名/命令行
进程的具体信息,跟平时windows系统上的任务管理器详情比较类似
根据这个信息就可以找出具体是那些进程消耗资源比较多,根据它来优化代码就可以了
当然也可以加机器