一、使用w查看系统负载
# w
06:10:09 up 6:20, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.93.1 23:50 1.00s 0.22s 0.02s w
第1行从左至右显示的信息:当前系统时间 up 系统运行时间,登录用户数,平均负载。
远程登录为pts,虚拟机内登录为tty,Linux登录章节有详细介绍。
pts显示了远程的IP。
LOGIN:登录的时间
IDLE:空闲了多长时间。
load average: 0.00, 0.01, 0.05
load average:系统负载。
第1个数值表示1分钟内系统的平均负载值,第2个数值表示5分钟内系统的平均负载值,第3个数值表示15分钟内系统的平均负载值。着重看第1个值,它表示单位时间段内使用CPU的活动进程数(在这里其实就是1分钟内),值越大说明服务器压力越大。一般情况下,这个值只要不超过服务器的CPU数量就没关系。若服务器CPU数量为8,那么值小于8就说明当前服务器没压力,8就是理想状态。
负载理想的状态就是自己的CPU数量的数字,当前我的有1颗CPU,那么数字为1时就是理想状态,不闲也无压力。
查看服务器有多少个CPU,方法:
# cat /proc/cpuinfo
processor : 0 看第1行的这个值,0代表1颗,1代表2颗,此处为逻辑CPU,并非物理CPU。最大数字是7,代表8颗CPU。
# uptime
06:54:20 up 7:04, 1 user, load average: 0.00, 0.01, 0.05
和w命令的第一行一模一样。
当系统负载过大时,无法判断具体哪里有压力。
二、vmstat命令
vmstat:监控系统的状态。
判断压力的问题源(CPU、内存、磁盘等),使用vmstat命令。
# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1543344 2076 182424 0 0 3 0 25 22 0 0 100 0 0
通常用法是: # vmstat 1 每1秒显示1次,动态显示。
或者# vmstat 1 5 每秒显示1次,显示5次自动结束。
打印的结果分为6个部分:procs、memory、swap、io、system、cpu。
重点关注:r、b、si、so、bi、bo。
procs:显示进程的相关信息。
r(run):表示运行或等待CPU时间片的进程数。某一时刻1个CPU只能有1个进程占用,其他进程排队,等待CPU时间资源的进程依然是运行状态。该数值若长期大于服务器CPU的个数,则说明CPU资源不够用了。
b(block):进程被CPU以外的资源阻断了。等待资源的进程数,这个资源指的是I/O,内存等。举例,当磁盘读写很频繁时,写数据就会很慢,此时CPU运算很快就结束了,但进程需把计算的结果写入磁盘,这样进程的任务才算完成,那此时该进程只能慢慢等待磁盘,这个进程就是b状态。该数值长时间大于1,则需要关注了。
menory:显示内存的相关信息。
swpd:表示切换到交换分区中的内存数量,单位为KB。(若持续变动,说明内存和swap分区在频繁交换数据,说明内存不够了,为0正常)
free:表示当前空闲的内存数量,单位为KB。
buff:表示(即将写入磁盘的)缓冲大小,单位为KB。
cache:表示(从磁盘中读取的)缓存大小,单位为KB。
swap:显示内存的交换情况。
(i:in)si:表示由交换区写入内存的数据库,单位为KB。关联:swpd
(o:out)so:表示由内存写入交换区的数据量,单位为KB。关联:swpd
io:显示磁盘的使用情况。和磁盘有关联,数字大代表在频繁读写,太多会造成b列增加。
bi:表示从块设备读取数据的量(读磁盘),单位为KB。
bo:表示从块设备写入数据的量(写磁盘),单位为KB。
system:显示采集间隔内发生的中断次数。
in:表示在某一时间间隔内观测到的每秒设备的中断次数。
cs:表示每秒产生的上下文切换次数。
cpu:显示CPU的使用状态。
us:显示用户下所花费CPU的时间百分比。数字不会超过100,若长时间大于50说明系统资源不够了。
sy:显示系统花费CPU的时间百分比。
id:表示CPU处于空闲状态的时间百分比。
(wait)wa:表示I/O等待所占用CPU的时间百分比。数字太大说明CPU不够用。
st:表示被偷走的CPU的所占百分比(一般为0,无需关注)服务器做了虚拟化,有虚拟机可能会偷走部分CPU。
us+sy+id=100
只需关注r、b、swpd、si、so、bi、bo、us、wa。多关注us。
三、top命令
top:查看具体进程使用资源情况。
用法:# top 动态监控进程所占的系统资源,每隔3秒变一次。
特点:把占用系统资源(CPU、内存、I/O等)最高的进程放到最前面。
top - 04:42:37 up 50 min, 1 user, load average: 0.07, 0.04, 0.05
Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1867048 total, 1546204 free, 136952 used, 183892 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1540464 avail Mem
Tasks:进程数。
Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie
94个进程,1个r状态的进程,93个休眠,0个停止进程。
zombie:僵尸进程。主进程以外中止,子进程留在这。
RES:进程所占的内存大小。物理内存大小。单位是字节。
%MEM:使用内存的百分比
KiB Mem : 1867048 total, 1543120 free, 139108 used, 184820 buff/cache
物理内存(KB):进程数,剩余,已使用,buff/cache
默认情况下按CPU从高到低排序。按M可按内存排序,按P可切换回CPU排序。按数字1可列出所有核的CPU的使用状态,按1可切换,按q键可以退出top。
top - 05:40:02 up 1:48, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1867048 total, 1546076 free, 136920 used, 184052 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 1540360 avail Mem
# top -c:可以查看到具体命令的全局路径。
# top -bn1:一次性静态输出所有信息,适合写脚本时使用。
四、sar命令
sar命令:可以打印历史信息,可以显示当天从零点开始到当前时间的系统状态信息。
可以监控系统几乎所有资源的状态,如平均负载,网卡流量,磁盘状态,内存等。
被称为Linux里的瑞士×××。查看网卡流量是非常有用的。
若没有该命令,yum install -y sysstat。
初次使用会报错,因为sar工具还没有生成相应的数据库文件。
它的数据库文件在/var/log/sa/目录下。
# sar -n DEV 查看网卡流量历史
该命令会把当天记录的网卡信息打印出来,每隔十分钟记录一次。
# sar -n DEV
Linux 3.10.0-693.el7.x86_64 (yaowei-01) 2018年03月20日 _x86_64_ (2 CPU)
06时00分02秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
06时10分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
06时10分01秒 ens33 0.35 0.09 0.02 0.01 0.00 0.00 0.00
平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: ens33 0.35 0.09 0.02 0.01 0.00 0.00 0.00
IFACE:设备名称。
rxpck/s:每秒进入收取的包的数量。每秒收入几千是正常,上万就不正常了。
txpck/s:每秒发送出去的包的数量。
rxkB/s:每秒收取的数据量(KB)。
txkB/s:每秒发送的数据量。
后面几列不需关注。
若服务器丢包严重,就应查一下网卡流量是否异常。若rxpck/s数值,或者rxkB/s大于5000000,很可能是被攻击了。正常的服务器网卡流量没这么高,除非是自己在复制数据。
# sar -n DEV 1 5 实时查看网卡流量
# sar -n DEV -f /var/log/sa/sa23 查看某天的网卡流量历史,后面跟文件名,23日。
该目录下还会生成一个sar23的文件,可以cat,sa23是二进制文件,不能cat。
RedHat或Centos发行版,sar的库文件一定在/var/log/sa/下。
# sar -q 查看历史负载,有助于查看服务器在过去某个时间的负载情况。
# sar -b 查看磁盘
五、nload命令
比sar查看网卡流量更好用。系统默认没安装。
# yum install -y epel-release; yum install -y nload
因为nload包在epel扩展源里,所以要先安装一个扩展源。
# nload
Device ens33 [192.168.93.130] (1/2):
======================================================================================================================
Incoming:
Curr: 944.00 Bit/s
Avg: 1.12 kBit/s
Min: 944.00 Bit/s
Max: 1.86 kBit/s
Ttl: 15.59 MByte
Outgoing:
Curr: 8.58 kBit/s
Avg: 8.44 kBit/s
Min: 4.27 kBit/s
Max: 9.03 kBit/s
Ttl: 1.05 MByte
最上面一行为网卡名和IP地址,按右方向键可以查看其它网卡的网络流量。
Incoming:进入网卡的流量,Outgoing:网卡出去的流量。
主要关注Curr那行。按q退。
二十九、w查看系统负载、vmstat命令、top命令、sar命令、nload命令
原文:http://blog.51cto.com/13576245/2088778