Linux监控指令

目前互联网公司的服务器一般采用Linux系统,同时,为了实时监控服务器的健康状况,我们通常编写Shell脚本或Python脚本来监控测试服务器的各项指标,包括CPU、内存、IO等指标,本期将介绍Linux中常见的监控指令。

CPU

说到监控CPU,目前主要是监控CPU的使用率,以及每一个进程占用CPU资源,Linux系统中主要使用top、vmstat、pstree三个命令。

1. top

直接输入top,返回下图所示内容,其中,load average: 0.00,0.01,0.05 分别表示最近1分钟、5分钟和15分钟的负载,数值越高负载越大。一般要求最好不要超过cpu的核数。比如,单核就最好小于1。如果看到机器长期出于高于核数的情况,说明机器的cpu排队严重。

%Cput(s)这一行表示的是cpu使用情况,例如cpu的利用率、空闲等信息。如果按下数字键“1”,还可以看到每一个核的情况。

我们还可以查看每一个进程的情况,可以运行的时候加上-p参数:top -p pid即可。如果想按照某种方式排序,只需要按下大写的字母“O”,即可选择排序。

2. vmstat

直接输入vmstat n表示n秒钟显示一次整个机器的CPU、内存、I/O使用情况,如下图所示,我们先来看下和CPU相关的参数,其中,r表示运行队列,如果这个值很大,则说明很多进程在排队等待执行。更说明现在cpu忙的很,压力山大。

in和cs:这两个值分别代表中断次数和上下文切换次数。这两个值越大,代表系统在进行大量的进程切换。这说明我们的进程数(或者线程数)太大,导致系统不断的在切换进程,应该尽量减少进程或线程数量。

us、sy、id和wa:这四个值分别代表用户进程、系统进程、空闲和等待的cpu时间占比。us越高说明用户进程占用cpu越高、sy则代表系统进程占用。如果id很高,恭喜你,你的机器很闲;如果wa很高,则说明你的机器因为io很忙而造成cpu等待。

3. pstree

pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。

Mem

内存主要可以从整个系统内存情况、各个进程对应内存使用情况和每个进程内存详细情况三个纬度进行监控,其中整个系统内存情况可以使用vmstat和free两个指令,每个进程对应内存情况可以使用top和ps两个指令,而每个进程内存详细情况可以使用pmap和jmap。

1. vmstat

2. free

其中,total = used + free + buffer/cache,单位是K。

3. top

如上图所示,%MEM表示每个进程使用内存空间对应整个内存占比,除此之外,还有三个和内存有关的参数分别是:VIRT(Virtual Memory Usage)、RES(Resident Memory Usage)、SHR(Shared Memory),它们分别表示进程占用的虚拟内存的大小、进程使用的常驻内存大小(它表示进程实际使用内存的情况。一般情况下,我们看内存用了多少,实际就是关注这个值)和共享内存的大小(包括共享内存、共享库占用的大小等)。

4. pmap

使用pmap + 进程号,我们可以看到指定进程到底在哪个库、哪些文件上使用了多少内存,方便我们来定位内存的使用。

5. jmap

jmap是java提供的内存查看工具,能看java进程的对象内存分配的详细情况。#instances表示对象实例数量 ,#bytes表示对象实例占用总内存数,单位是字节 ,class name表示对象实例名称 。最后一行表示总实例数量与总内存占用数。

IO

磁盘监控包含磁盘情况和磁盘性能分析,磁盘情况可以通过df命令和fdisk命令,来看看我们磁盘的大小以及其他的信息,而磁盘性能分析则可以通过vmstat命令。

1. df 和 fdisk

可以看到/dev/下有一个42.9G的硬盘,它有83886080个扇区,每个扇区512bytes大小,目前已使用5%。

2. vmstat

在vmstat的状态统计信息里:b值代表因为io阻塞排队的任务数;bi值代表每秒写入磁盘的块数;bo值代表每秒读出磁盘的块数;wa值代表因为IO等待消耗的cpu时间比例。这几个值变大,都意味着IO的消耗增加。对于读请求大的服务器,一般b、bi、wa都会比较大,而对于写入量大的服务器,一般b、bo、wa都会比较大。

木可大大

分享知识 传播技能

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180603A0AXYZ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券