10.1 使用w查看系统负载shell
一、使用 w 查看系统负载数据库
21:08:54 是系统时间, up 5 days 启动时间 ,TTY 这边,若是是网络登陆的话,就会显示成 pts/0 或 pts/1 缓存
load average : 0.00,0.01,0.05 。这三个数值的含义跟CPU有关系,表示的意义是,单位时间段内CPU活动进程数。固然这个值越大就说明你的服务器压力越大。通常状况下这个值只要不超过服务器的cpu数量就没有关系,若是服务器cpu数量为8,那么这个值若小于8,就说明当前服务器没有压力,不然就要关注一下了。这些数值为0也很差,说明服务器空闲着,太浪费了。那么这些数值何时才是最理想的状态?这时候就要查看 CPU 数量,这边的CPU数量指的是逻辑CPU,而不是物理CPU,使用命令 cat /proc/cpuinfo见下图:服务器
0 表示只有一个逻辑CPU。load average 这边的第一数值为 1 的时候,最为理想,既没有空着,也没有太多负载。其余两个数值同理,通常最为关注的是第一个数值。只要数值不超过CPU的数量,就没有太大问题。‘/proc/cpuinfo’ 这个文件记录了cpu的详细信息。目前市面上的服务器一般都是2颗4核cpu,在 Linux 看来,它就是8个cpu。查看这个文件时则会显示8段相似的信息,而最后一段信息中processor : 后面跟的是 ‘7’ 因此查看当前系统有几个cpu,咱们可使用这个命令: grep -c 'processor' /proc/cpuinfo ,而如何看几颗物理cpu呢,须要查看关键字 “physical id”, 因为个人虚拟机只有一个cpu因此并未显示关于 “physical id” 的信息。网络
还有一个命令 uptime ,见下图,工具
结果跟 w 命令的第一行一摸同样,因此通常都使用 w 命令来查看性能
10.2 vmstat 命令ui
上面讲的 w 查看的是系统总体上的负载,经过看这些数值能够知道当前系统有没有压力,可是具体是哪里(CPU, 内存,磁盘等)有压力就没法判断了。这时候就须要用到 vmstat 命令,能够知道具体是哪里有压力。vmstat命令打印的结果共分为6部分:procs, memory, swap, io, system, cpu,见下图,对象
1)procs 显示进程相关信息
r :表示运行和等待cpu时间片的进程数,若是长期大于服务器cpu的个数,则说明cpu不够用了;
b :表示等待资源的进程数,好比等待I/O, 内存等,这列的值若是长时间大于1,则须要关注一下了;
2)memory 内存相关信息
swpd :表示切换到交换分区中的内存数量 ;
free :当前空闲的内存数量;
buff :缓冲大小,(即将写入磁盘的);
cache :缓存大小,(从磁盘中读取的);
3)swap 内存交换状况
si :由交换区写入到内存的数据量;
so :由内存写入到交换区的数据量;
4)io 磁盘使用状况
bi :从块设备读取数据的量(读磁盘);
bo: 从块设备写入数据的量(写磁盘);
5)system 显示采集间隔内发生的中断次数
in :表示在某一时间间隔中观测到的每秒设备中断数;
cs :表示每秒产生的上下文切换次数;
6)CPU 显示cpu的使用状态
us :显示了用户下所花费 cpu 时间的百分比;
sy :显示系统花费cpu时间百分比;
id :表示cpu处于空闲状态的时间百分比;
wa :表示I/O等待所占用cpu时间百分比;
st :表示被偷走的cpu所占百分比(通常都为0,不用关注);排序
以上所介绍的各个参数中,咱们常常会关注r列,b列,和wa列,三列表明的含义在上边说得已经很清楚。IO部分的bi以及bo也是要常常参考的对象。若是磁盘io压力很大时,这两列的数值会比较高。另外当si, so两列的数值比较高,而且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这每每对系统性能影响极大。
咱们使用 vmstat 查看系统状态的时候,一般都是使用下图的形式来看的:
mstat 1 显示的是,每隔1秒打印一次状态,一直打印,直到咱们按 Ctrl + c 结束。还有另一种方式,见下图
vmstat 1 5 表示每隔一秒钟打印一次状态,共打印5次,而后命令自动结束。这边显示的结果 里面,咱们通常只需关注这几列:r、b、swpd、si、so、bi、bo、us、wa。r(run)表示有多少个进程处于运行状态。b(block)表示进程被CPU之外的资源(好比硬盘、网络)给阻断了,处于一个等待的状态。swpd 交换分区,当内存不够的时候,系统会把内存里的一部分数据释放一些出来,临时放到 swpd 空间里面,当这一列的数据没有变化的时候,说明没有什么问题,若是这一列的数据一直在跳动的话,就说明内存不够。si 和 so 这两列数据和 swpd 是有关系的,他们的单位都是KB,si 是由swpd写入到内存的数据量,so 是由内存写入到swpd的数据量,i 是in,o 是out。bi 和 bo 这两列数据和磁盘是有关系的,bi 是从块设备读取数据的量(读磁盘),bo 是从块设备写入数据的量(写磁盘),这两个数据很大的话,说明磁盘在频繁的读和写。bi 和 bo 的数据很大,必然形成 b 列的数据增长。us 表示用户级别的,显示了用户下所花费 cpu 时间的百分比,这个数据是不会超过100的,若是这个数字长时间大于 50 ,也是说明资源不够。us + sy(系统花费CPU百分比) + id(空闲百分比) = 100 。wa(wait 等待)与 b 相似,表示等待 CPU 的百分比,即由多少个进程在等待CPU,若是这个数很大,说明CPU不够用。
10.3 top命令
查看进程使用资源状况。这个命令用于动态监控进程所占系统资源,每隔3秒变一次。它的特色是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放到最前面。top命令打印出了不少信息,包括系统负载(loadaverage)、进程数(Tasks)、cpu使用状况、内存使用状况以及交换分区使用状况。其实上面这些内容能够经过其余命令来查看,因此用top重点查看的仍是下面的进程使用系统资源详细情况。这部分东西反映的东西仍是比较多的,不过须要你关注的也就是几项:%CPU, %MEM, COMMAND 。RES 这一项为进程所占内存大小,而 %MEM 为使用内存百分比。在 top 状态下,按 “shift + m”, 能够按照内存使用大小排序。按数字 ‘1’ 能够列出各颗cpu的使用状态。
输入 top ,回车,见下图,
默认是按CPU百分比(%CPU)排序,%CPU数值大的排在前面。%MEM为使用内存百分比,RES是物理内存大小,单位是K。假如我如今想让排序按%MEM来排序,要怎么操做呢?按下shift + m ,也就是大写的M,见下图,
如今就是按%MEN的大小来排序,排在第一位的是system。如今想要换回默认的%CPU排序,直接按下 shift+ p,即大写的 P .
还有一个选项,数字 1 ,按数字 ‘1’ 能够列出各颗cpu的使用状态,见下图,
%CPU0是单核,因此只有一行。再按一次 1 ,就恢复到默认状态,默认状况下查看的是平均值。
按字母 q ,就能够退出 top 查看的状态。
还有一种用法是 top -c,输入 top -c ,回车,见下图,
咱们能够看到具体的命令的进程,看到的是所有的路径名称。单纯使用命令 top 的 话,只能查看最后面进程的名字。
还有一种用法,输入命令 top -bn1 ,回车,见下图,
上图把全部的进程,所有一次性列出,呈静态显示。此命令适合在写shell脚本的时候应用。
这边想要终止一个进程,使用命令 kill+PID号,回车,便可。
10.4 sar命令
sar 命令很强大,它能够监控系统全部资源状态,好比平均负载、网卡流量、磁盘状态、内存使用等等。它不一样于其余系统状态监控工具的地方在于,它能够打印历史信息,能够显示当天从零点开始到当前时刻的系统状态信息。若是你系统没有安装这个命令,请使用 yum install -y sysstat 命令安装。初次使用sar命令会报错,那是由于sar工具尚未生成相应的数据库文件(时时监控就不会了,由于不用去查询那个库文件)。它的数据库文件在 “/var/log/sa/” 目录下,默认保存一个月。由于这个命令太过复杂,因此这边只介绍几个。
安装sar : yum install -y sysstat
刚刚安装了 sar 命令,全部执行命令 ls /var/log/sa ,没有结果,须要等十分钟才会生成文件,由于每隔十分钟会生成一个文件。因此须要给 sar 命令加上具体的选项和参数,见下图,
1 表示每隔 1秒,10 表示显示10次.第1列是时间,第2列是网卡的名字(IFACE)表示设备名称,第3列 rxpck/s 表示每秒进入收取的包的数量,第4列 txpck/s 表示每秒发送出去的包的数量,第5列 rxkb/s 表示每秒收取的数据量(单位Byte),第6列 txkb/s表示每秒发送的数据量。后面3列不须要关注,始终都是0.00。若是有一天你所管理的服务器丢包很是严重,那么你就应该看一看这个网卡流量是否异常了,若是rxpck/s 那一列的数值大于4000,或者rxkb/s那列大于5,000,000则颇有多是被攻击了,正常的服务器网卡流量不会高于这么多,除非是你本身在拷贝数据。
接着来查看 sar 命令,见下图,
而后查看 ls /var/log/sa ,就有出现了文件 sa25,这个 sa 文件后面是以当天日期命名的,另外也能够查看某一天的网卡流量历史,使用-f选项,后面跟文件名
sar -n DEV -f /./var/log/sa/sa24
查看系统负载
sar -q 1 10
查看系统磁盘
sar -b
查看磁盘读写
sar -b 1 5
10.5 nload命令
监控网卡流量,这个命令默认是没有安装的,安装 nload 以前,须要先安装 epel-release ,安装完毕以后,接着往下操做,直接输入命令 nload ,回车,进入下图,
yum install epel-release
yum install nload
上图显示的信息是动态的,这只是其中一个网卡 ens33 ,按向右的方向键 → ,便可查看另外一个网卡 lo 的信息,见下图,
按向左的方向键 ← ,又能够回到上一个网卡 ens33 ,能够来回切换。按字母 q 就能够退出这个界面
总结: w 查看系统负载 date 查看当前的日期和时间 vmstat n 每隔n秒打印一次状态 vmstat n m 每隔n秒打印一次状态,一共打印m次 top 查看进程使用状况 大写的M %MEN内存排序 大写的P %CPU排序。 数字 1 查看指定每一个CPU的使用状态 字母 q 退出 top 查看状态 top -c 查看具体的命令的进程 top -bn1 静态的显示所有进程,适合在写shell脚本的时候应用 sar -n DEV 查看网卡流量历史的 sar -q 查看系统负载 sar -b 查看系统磁盘 nload 监控网卡流量