关于linux:老哥10分钟让你学会Linux的top命令

31次阅读

共计 2072 个字符,预计需要花费 6 分钟才能阅读完成。

后端们最怕的事件之一就是服务器的负载忽然飙升,这可能又意味着一个个炫目 Call 马上要打过去了。碰到这种状况怎么办,大家第一反馈肯定是登陆到服务器上,先敲一个 top 命令看看 Load Average 吧。明天这篇文章和大家说说怎么看这个“Load Average”。

Load Average

很多人说 Load Average 这一个指标就能阐明零碎负载高了,这句话是对的。那么具体是哪里压力大了呢?这三个数值是怎么计算出来的呢?可能很多人一下子都说不上来。

先来说说定义吧: 在一段时间内,CPU 正在解决以及期待 CPU 解决的过程数之和。 三个数字别离代表了 1 分钟,5 分钟,15 分钟的统计值。

所以,这个数值确实能反馈服务器的负载状况。然而,这个数值高了也并不能间接代表这台机器的性能有问题。可能是因为正在进行 CPU 密集型的计算,也有可能是因为 I / O 问题导致运行队列堵了。所以,当咱们看到这个数值飙升的时候,还得具体问题具体分析。间接降级机器是简略粗犷,然而治标不治本。

top 命令一行一行看

top 命令输入了很多参数,真正的服务器负载状况咱们要综合其余参数一起看。

top - 20:41:08 up 18 days,  5:24,  2 users,  load average: 0.04, 0.03, 0.05

top:以后工夫
up:机器运行了多少工夫
users:以后有多少用户
load average:别离是过来 1 分钟,5 分钟,15 分钟的负载 

具体须要关注的果然还是 load average 这三个数值。大家都晓得,一个 CPU 在一个工夫片外面只能运行一个过程,CPU 核数的多少间接影响到这台机器在同工夫能运行的过程数。所以一般来说 Load Average 的数值别超过这台机器的总核数,就根本没啥问题。

Tasks: 216 total,   1 running, 215 sleeping,   0 stopped,   0 zombie

Tasks:以后有多少过程
running:正在运行的过程
sleeping:正在休眠的过程
stopped:进行的过程
zombie:僵尸过程 

running 越多,服务器天然压力越大。


%Cpu(s):  0.2 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

us: 用户过程占 CPU 的使用率
sy: 零碎过程占 CPU 的使用率
ni: 用户过程空间扭转过优先级
id: 闲暇 CPU 占用率
wa: 期待输入输出的 CPU 工夫百分比
hi: 硬件的中断请求
si: 软件的中断请求
st: steal time

这一行代表了 CPU 的应用状况,us 长期过高,表明用户过程占用了大量的 CPU 工夫。us+sy 如果长期超过 80 或者 90,可能就代表了 CPU 性能有余,须要加 CPU 了。


KiB Mem : 65810456 total, 30324416 free,  9862224 used, 25623816 buff/cache
KiB Swap:  7999484 total,  7999484 free,        0 used. 54807988 avail Mem

total:内存总量
free:闲暇内存
used:应用的
buffer/cache:写缓存 / 读缓存 

第四第五行别离是内存信息和 swap 信息。所有程序的运行都是在内存中进行的,所以内存的性能对与服务器来说十分重要。不过当内存的 free 变少的时候,其实咱们并不需要太紧张。真正须要看的是 Swap 中的 used 信息。Swap 分区是由硬盘提供的替换区,当物理内存不够用的时候,操作系统才会把临时不必的数据放到 Swap 中。所以当这个数值变高的时候,阐明内存是真的不够用了。

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                  
19868 root      20   0 19.733g 369980  15180 S   0.7  0.6 129:53.91 java                                                                                                                                                                     
19682 root      20   0 19.859g 5.766g  22252 S   0.3  9.2 139:42.81 java                                                                                                                                                                     
54625 100       20   0   50868  33512   4104 S   0.3  0.1   0:04.68 fluentd                                                                               

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: 命令名 / 命令行 

这些就是过程信息了,从这里能够看到哪些过程占用系统资源的详情。

其余命令

top 当然是咱们最常见的查看零碎情况的命令。其余命令还有很多。vmstat,w,uptime,iostat 这些都是罕用的命令。

综上


看懂这些具体参数当前,就晓得本人的代码到底哪方面须要改良了,是优化内存耗费,还是优化你的代码逻辑,当然无脑堆机器也能够,只有你压服的了老板!

正文完
 0