w命令 vmstat命令 top命令 sar命令 nload命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了w命令 vmstat命令 top命令 sar命令 nload命令相关的知识,希望对你有一定的参考价值。

一 w查看当前系统的负载

-f  开启或关闭显示用户从何处登入系统。

-h  不显示各栏位的标题信息列。

-l  使用详细格式列表,此为预设值。

-s  使用简洁格式列表,不显示用户登入时间,终端机阶段作业和程序所耗费的CPU时间。

-u  忽略执行程序的名称,以及该程序耗费CPU时间的信息。

-V  显示版本信息。

第一行从左面开始显示的信息依次为:时间,系统运行时间,登录用户数,平均负载。

USER:登录用户名

TTY:登陆后系统分配的终端号

FROM:远程主机名,即从哪里登陆的

[email protected]:何时登陆

IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,该计时器便会被重置。

JCPU:和该终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间。

PCPU:当前进程所占用时间。

WHAT:当前正在运行进程的命令行。

load average: 后面的三个数值。

第一个数值表示1分钟内系统的平均负载值;

第二个数值表示5分钟内系统的平均负载值;

第三个数值表示15分钟系统的平均负载值。

这个值的意义是,单位时间段内CPU活动进程数。值越大就说明服务器压力越大。一般情况下这个值只要不超过服务器的cpu数量就没有关系,如果服务器cpu数量为8,那么这个值若小于8,就说明当前服务器没有压力。

用cat /proc/cpuinfo查看服务器有几个CPU

查看当前系统有几个cpu,使用命令: grep -c ‘processor‘ /proc/cpuinfo

查看几颗物理cpu,grep -c ‘physical id‘ /proc/cpuinfo

二 vmstat 监控系统的状态

vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数

1表示每隔一秒采集一次服务器状态,2表示只采集一次。

1)procs 显示进程相关信息

r :(run)表示运行和等待cpu时间片的进程数,如果长期大于服务器cpu的个数,则说明cpu不够用了;

b :(block)表示等待资源的进程数,比如等待I/O, 内存等,这列的值如果长时间大于1,则需要关注一下了;

2)memory 内存相关信息

swpd :表示切换到交换分区中的内存数量 ;

free :当前空闲的内存数量;

buff :缓冲大小,(即将写入磁盘的);

cache :缓存大小,(从磁盘中读取的);

3)swap 内存交换情况

si :(in)由交换区写入到内存的数据量;每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。

so :(out)由内存写入到交换区的数据量;每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

4)io 磁盘使用情况

bi :(in)从块设备读取数据的量(读磁盘);块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte

bo: (out)从块设备写入数据的量(写磁盘);块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

5)system 显示采集间隔内发生的中断次数

in :表示在某一时间间隔中观测到的每秒设备中断数;

cs :表示每秒产生的上下文切换次数;例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

6)CPU 显示cpu的使用状态

us :显示了用户下所花费 cpu 时间的百分比;

sy :显示系统花费cpu时间百分比;系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id :(idle)表示cpu处于空闲状态的时间百分比;空闲 CPU时间,一般来说,id + us + sy = 100,一般认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

wa :(wait)表示I/O等待所占用cpu时间百分比;

st :(steal)表示被偷走的cpu所占百分比(一般都为0,不用关注);

三top命令

第一行:

当前系统时间

系统已经运行的时间(在这期间没有重启过)
2 users — 当前有2个用户登录系统
load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行:
Tasks — 任务(进程),系统现在共有103个进程,其中处于运行中的有2个,101个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

第三行:cpu状态
us — 用户空间占用CPU的百分比。
sy — 内核空间占用CPU的百分比。
ni — 改变过优先级的进程占用CPU的百分比
id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比

第四行:内存状态
total — 物理内存总量1.78G
used — 使用中的内存总量112M
free — 空闲内存总量1.6G
buffers — 缓存的内存量 152M

第五行:swap交换分区
total — 交换区总量
used — 使用的交换区总量
free — 空闲交换区总量
cached — 缓冲的交换区总量

第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached。

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第七行以下:各进程(任务)的状态监控
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)

在 top 状态下,按 "shift + m", 可以按照内存使用大小排序。

按数字 ‘1‘ 可以列出各颗cpu的使用状态,监控每个逻辑CPU的状况

top -bn1 它表示非动态打印系统资源使用情况,可以用在shell脚本中,和 top 命令唯一的区别就是,它一次性全部把所有信息输出出来而非动态显示。

top –c可以查看具体命令。

四 sar命令

sar(System ActivityReporter系统活动情况报告),它可以监控系统几乎所有资源状态,比如平均负载、网卡流量、磁盘状态、内存使用等。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。

yum install -y sysstat 命令安装。初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件(时时监控就不会了,因为不用去查询那个库文件)。

它的数据库文件在 "/var/log/sa/" 目录下,默认保存一个月。

用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]

查看网卡流量 sar –n DEV

IFACE这列表示设备名称,本地网卡接口的名称

rxpck/s 表示每秒进入收取的包的数量

txpck/s 表示每秒发送出去的包的数量

rxkb/s 表示每秒收取的数据量(单位Byte)

txkb/s表示每秒发送的数据量。

后面几列不需要关注。如果有一天所管理的服务器丢包非常严重,那么就应该看一看这个网卡流量是否异常了,如果rxpck/s 那一列的数值大于4000,或者rxkbs/s那列大于5,000,000则很有可能是被×××了,正常的服务器网卡流量不会高于这么多,除非是自己在拷贝数据。

sar -n DEV 1 1: 每间隔1秒统计一次,总计统计1次

也可以查看某一天的网卡流量历史,使用-f选项,后面跟文件名,在系统格式Redhat或者CentOS版本中,sar的库文件一定是在/var/log/sa/目录下的。

例如:sar -n DEV -f /var/log/sa/sa30

sa30是二进制文件不能使用cat查看。

查看历史负载 sar -q

sar补充:用法很多,只学有用的。

-n 使用总结

-n DEV : 网络接口统计信息。

-n EDEV : 网络接口错误。

-n IP : IP数据报统计信息。

-n EIP : IP错误统计信息。

-n TCP : TCP统计信息。

-n ETCP : TCP错误统计信息。

-n SOCK : 套接字使用。

五 nload命令

安装:yum install –y epel-release;yum install –y nload

nload依赖于epel-release包。

以实时地监控网卡的流量,分Incoming,Outgoing两部分,也就是流入与流出的流量,同时统计当前,平均,最小,最大,总流量的值,使人看了一目了然,直接用nload回车即可,也可以指定网卡,如nload eth1。向右箭头查看其它网卡的网络流量。q退出。

以上是关于w命令 vmstat命令 top命令 sar命令 nload命令的主要内容,如果未能解决你的问题,请参考以下文章

二十九w查看系统负载vmstat命令top命令sar命令nload命令

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

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

使用w,vmstat命令,top命令,sar命令,nload命令

W命令/vmstat命令/top命令/sar命令/nload命令

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