使用w查看系统负载 、vmstat、top、sar、nload命令

监控系统状态

• w/uptime 查看系统负载
• cat /proc/cpuinfo 查看cpu核数

• vmstat 监控系统状态
• 用法 vmstat 1
• 关键的几列:r,b,swpd,si,so,bi,bo,us,wa

• top查看进程使用资源情况
• top -c 显示详细的进程信息
• top -bn1 静态显示所有进程
• q退出,数字1显示所有核cpu,大写字母M按内存使用排序
• 大写字母P按cpu使用排序

load average 平均负载

  • 三个查询平均负载的命令:w uptime top

w:查看当前系统的负载

[root@localhost sbin]# w
 15:23:46 up  3:34,  2 users,  load average: 0.03, 0.05, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                12:26    2:55m  0.11s  0.11s -bash
root     pts/0    10.72.137.53     12:28    1:17m  1:32   1:32  -bash

15:23:46 当前系统时间 ; up 3:34 启动多长时间;2 users, 两个用户。一个是tty1-6,pts/0是通过远程登录的。

  • 查看的内容是 load average
  1. 第一个值:1分钟内系统的平均负载;1分钟内有多少个进程在使用我们的cpu计算或者在等待排队。

  2. 第二个值:5分钟内系统的平均负载;5分钟内有多少个进程在使用我们的cpu计算或者在等待排队。

  3. 第三个值:15分钟内系统的平均负载;15分钟内有多少个进程在使用我们的cpu计算或者在等待排队。

  4. 负载越高,cpu的压力越大;

  • cpu概念:cpu并不是来多少进程,它都可以全部为你提供服务,因为cpu在摸个时刻内只能给一个进程或任务提供服务,其他进程先排队,按照优先级的顺序一个一个的轮流使用cpu进行运算。

load average这个值什么时候合适,什么时候偏大,偏小都是有依据的,这是根据cpu的核数来规定的。逻辑CPU

查看cpu核数的命令:cat /proc/cpuinfo

  • 看processor : 0 有几段,cpu就是几核

  • user:用户

  • TTY:在哪里登陆

  • FROM:从哪里登陆

  • LOGIN@:登陆时间

  • IDLE:空闲时间

  • JCPU:当前终端上所有进程及子进程占用cpu的时间

  • PCPU:当前进程占用cpu的时间

  • WHAT:当前具体哪个命令

什么时候负载均衡高呢?
当有进程排队的时候就说明cpu核数不够了。

vmstat工具 :查看系统瓶颈

前面讲到系统的平均负载,如果负载过高,我们要查看是什么原因造成负载过高呢?

  1. vmstat 不加任何数值,值显示一行
  2. vmstat 1 平均1秒显示一次
  3. vmstat 1 5 平均1秒显示一次,显示5次

输入图片说明

proce

  • r : 表示有多少个任务处于run状态:跑的状态,比如只有一个cpu,有10个进程,这10个进程有1个进程在使用cpu,9个在排队,但是9个不是一直在排队,而是有一个值比如1个进程使用cpu1分钟,到了1分钟,第二进程使用cpu1分钟,以此类推,直到进程完成。
  • b :进程被cpu以外的资源阻塞了,比如硬盘或者是带宽阻塞了。 block被阻塞的,什么时候被阻塞呢?比如磁盘很忙的时候,你去写一个数据,计算结果出来你要把结果写入磁盘里面去,但是磁盘很慢,它毕竟比不了cpu的速度,只能等待一会,这儿就是磁盘被阻塞了,这个任务被磁盘的IO阻塞了。再比如我们的带宽跑满了,数据想通过TCP/IP通信的方式传输出到远程去送给另外一个服务器上,这个时候如果带宽跑满了,网速很忙,它也会被阻塞,总之:blocal就是那些被我们IO阻塞的任务有多少个,不管是磁盘还是网络。

memory

  • swap : 有多少个数据量在被交换(单位KB):表示有多少数据量被拿到交换分区里面。这个数值不变化,说明你的内存没有问题,如果这个数值比较大并且频繁的变动,这个时候就要注意你的内存可能不够,或者是内存溢出(程序写的有问题)。
  • free : 内存还剩余多少,单位为KB。
  • buff:表示即将写入磁盘的缓冲大小,单位为KB。
  • cache:表示从磁盘中读取的缓冲大小,单位为KB。

swap 显示内容的交换情况

  • si : swap in 进入内存。对象是内存
  • so :swap out 从内存里面出来,对象是内存

这两个值一直为0或者很小,没有什么变化很稳定,说明内存够,没有瓶颈,如果这个值来回的变化很频繁,长期大于0.,说明你的内存不够

io显示磁盘的使用情况

  • bi :进入到内存中去,这意味从磁盘里面读出来: 读磁盘
  • bo :从内存读出来,这意味着写入磁盘里面去: 写磁盘

这两个值怎么叫大呢,一般的服务器超过1000,就有一定压力(一直是1000以上)就会产生瓶颈。 如果只是偶尔1000,其他时候都是0或者很小,就说明问题不大

system显示采集间隔内发生的冲断次数

  • in 终端
  • cs 上下文切换

这个两个值在一秒钟的次数

cpu 显示cpu的使用状态

  • us : 用户进程占用cpu的时间百分比
  • sy : 内核进程占用cpu的时间百分比
  • id : CPU空闲状态的时间百分比
  • wa : I/O等待所占用cpu的时间百分比
  • st : 被偷走的的CPU所占百分比(一般都为0,不用关注)
  1. r,b 值很高说明系统负载很高,查看cpu是否有瓶颈。
  2. us 也很关键,如果us一直高于50或者接近100%说明某一个进程占用cpu很大的资源,肯那个就是一些计算量很大的任务需要优化一下。
  3. 平常我们去衡量一个系统的负载不仅要看一份中内的负载load average值,还要查看cpu的us这个值得百分比。

top 命令:查看具体进程

  • top 默认3秒一次
  • q 退出
  • top -d 1 1秒显示一次
  • top -c 显示具体进程的命令,更全路径
  • top -bn1 一次性静态显示出来;一般用在写在脚本里面。
  • top 一般查看load average ;us,sy ,物理内存剩余空间

输入图片说明

  • total :所有进程
  • sleepling :休眠的进程
  • stopped:已经停止进程
  • zombie :僵尸进程,主进程意外中断,只剩下一些子进程,自生自灭

默认情况下,按cpu使用百分比排序。

  • PID:进程id ;进程ID在/proc 下
  • USER: 用户名
  • PR:范围0~39;NI:范围-20~19; 进程优先级,PR数值越小,优先级越高
  • VIRI:虚拟内存大小
  • RES:物理内存大小,使用了多少物理内存,单位kib
  • SHR:共享内存
  • S:进场状态
  • cpu:cpu使用多少百分比
  • mem:内存使用多少百分比
  1. top 状态下按M 可以按内存使用大小排序
  2. 按P 按cpu排序
  3. 按数字1可以列出各颗cpu的状态

输入图片说明

监控系统状态

• yum install -y sysstat
•sar -n DEV 网卡流量
• sar -q 系统负载
• sar -b 磁盘读写
• sar -f /var/log/sa/saxx 历史文件
• nload命令
• yum install -y epel-release
• yum install -y nload

网卡什么时候有瓶颈 千M网卡
带宽指的是比特bit
1byt(字节)=8bit
家庭用的10M带宽,理论上下载的速度是10M/8=1.25M/s
比特是网卡上的计量单位,就是所谓的数据流,而字节是计算机上文件的大小
1M=1024KB
1KB=1024byt
为了计算方便用1000来换算 。
1M=1000KB
1KB=1000byt

  • sar -n DEV 查看网卡流量
  • sar -n DEV -f /var/log/sa/sa13 查看历史流量
  • sar -q 查看历史负载
  • sar -b 查看历史磁盘
  • sar -p 查看历史cpu

sar 命令很强大,它可以监控系统所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等等。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。如果你系统没有安装这个命令,请使用 yum install -y sysstat 命令安装。初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件(时时监控就不会了,因为不用去查询那个库文件)。它的数据库文件在 “/var/log/sa/” 目录下,默认保存一个月。因为这个命令太过复杂。

yum install -y sysstat 安装后运行命令的时候会报错;这是因为sar的特性,每10分钟才会统计一次 。
输入图片说明

  1. 查看网卡流量 sar -n DEV #sar -n DEV 1 10 1秒显示一次,显示10次
    输入图片说明

IFACE这列表示设备名称,rxpck/s 表示每秒进入收取的包的数量,txpck/s 表示每秒发送出去的包的数量,rxbyt/s 表示每秒收取的数据量(单位Byte),txbyt/s表示每秒发送的数据量。后面几列不需要关注。如果有一天你所管理的服务器丢包非常严重,那么你就应该看一看这个网卡流量是否异常了,如果rxpck/s 那一列的数值2000左右是正常的,如果上W就不正常了,被攻击了,这个是我们就要去抓包去查看下一下,正常的服务器网卡流量不会高于这么多,除非是你自己在拷贝数据。上面的命令是查看网卡流量历史的,如何时时查看网卡流量呢?

另外也可以查看某一天的网卡流量历史,使用-f选项,后面跟文件名,如果你的系统格式Redhat或者CentOS那么sar的库文件一定是在/var/log/sa/目录下的。: 里面友两种文件一种是sa后面跟的是日期,要用sar -f 打开;还有一种是sar,可以用cat查看;文件里面存的是一个月30天的历史记录。

  1. 过了10分钟后,用sar命令就正常了 输入图片说明

sar -n DEV -f /var/log/sa/sa10 查看历史流量

sa10这个目录是有规律的,是按日期来的,这个目录最多保存一个月
输入图片说明

查看历史负载 sar -q

输入图片说明

查看历史磁盘 sar -b

输入图片说明

查看历史cpu sar -p

输入图片说明

注意:/var/log/sa下面有两个文件

  1. sa10 是当天生成,sar10第二天生成

  2. sa10和sar10的区别:sa10要用sa的命令来查看:sar -n DEV -f /var/log/sa/sa10

  3. sar10 可以直接用cat来查看:cat /var/log/sa/sar10
    输入图片说明

  4. sar -n DEV -f /var/log/sa/sa10 输入图片说明

  5. cat /var/log/sa/sar10
    输入图片说明

nload命令

  • 在安装nload前先装一个扩展包
    yum install -y epel-release
    yum install -y nload
[root@localhost ~]# nload

会出现一个动态的一个实时的网卡页面
网卡名;IP;几个网卡(按方向键选择网卡 )

输入图片说明

  1. Inconming:进来的带宽(受到攻击的时候流量会很大)
  2. outgoing: 出去的带宽(买的带宽)

猜你喜欢

转载自my.oschina.net/u/3791387/blog/1806694