w监控系统状态
- w/uptime 查看系统负载
- cat /proc/cpuinfo 查看cpu的核数
- vmstat 监控系统状态
- 用法 vmstat 1
- 关键的几列: r, b, ,swap, si ,so ,bi, us ,wa
- top 查看进程使用资源情况
- top -c 显示详细的进程信息
- top -bn1 静态显示所有的进程
- q 退出 , 数字1显示所有的核cpu,大写字母M按内存使用排序
- 大写字母P按CPU使用排序
1、 使用w查看系统负载
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。 cpu忙不过来了,自然就是超负荷。
processor是指一个CPU有几核,然后physical id这个才是有几颗物理CPU
看逻辑cpu笔记好的命令应该是 cat /proc/cpuinfo |grep processor |wc -l
直接显示出cpu个数,或者cat /proc/cpuinfo |grep processor 也可以
查看系统的cpu,是逻辑cpu
2、 vmstat命令
用vmstat命令监控系统的状态
命令w查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力。当它无法判断具体是哪里(CPU,内存,磁盘等)有压力,所以这就用到了vmstat。
命令vmstat用法
- 静态显示内存状态一次。
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 697884 948 175948 0 0 18 2 49 83 0 0 99 0 0
- vmstat [n] 在此n代表数字,意思是每隔n秒输出一次状态(按Ctrl+c结束命令)。
[root@localhost ~]# vmstat 1 //如果不Ctrl+c每1秒钟会显示一行。
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 697756 948 175968 0 0 17 2 48 82 0 0 100 0 0
0 0 0 697756 948 175968 0 0 0 0 28 43 0 0 100 0 0
- vmstat [n][m] 这里的n表示每隔n秒输出一次状态,m表示动态显示的次数;
[root@localhost ~]# vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 697764 948 175960 0 0 17 2 48 81 0 0 100 0 0
0 0 0 697764 948 175960 0 0 0 0 33 56 0 0 100 0 0
0 0 0 697764 948 175960 0 0 0 0 28 33 0 1 99 0 0
0 0 0 697764 948 175960 0 0 0 0 25 35 0 0 100 0 0
0 0 0 697764 948 175960 0 0 0 0 25 32 0 0 100 0 0
说明:
-
proc 显示进程相关信息
-
r:=run,表示运行中或等待cpu运行的进程数,如果该数长期大于服务器CPU个数,则说明CPU不够用了。
-
b: =block ,表示等待资源的进程数,如,等待I/O,内存等,这列的值如果长时间大于1,则需要关注一下。
-
-
memory 内存相关信息
-
swpd:表示切换到交换分区的内存量(当该数据不断变化时说明内存不足)
-
free:表示当前空闲的内存量
-
buff:缓冲大小
-
cache:缓存大小
-
-
swap 内存交换情况
-
si:=storage in,表示交换区写入到内存的数据量;表示有多少块,单位kb。
-
so:=storage out,表示由内存写出到交换区的数据量;
-
-
io 磁盘使用情况
-
bi:=block in,表示从块设备读取数据(写入内存)的量(即:读磁盘),单位为KB;
-
bo:=block out,表示(从内存读取)写入到块设备的数据(即:写磁盘),单位为KB;
注: 此处数据会直接关系到proc出的b的值。 -
bi bo:上5千的时候就要注意了。
-
-
system 显示采集间隔内发生的中断次数
-
in:表示在某一时间间隔中观测到的每秒设备中断数
-
cs:表示每秒产生的上下文切换次数
-
-
CPU 显示CPU的使用状态(us+sy+id=100%)
-
us:表示用户资源所花费CPU的百分比(当该值长时间>50时说明CPU数量不足)
-
sy:表示系统资源所花费(占用)CPU的百分比
-
id:表示CPU处于空闲状态的百分比
-
wa:=wait,表示等待使用CPU的百分比(该数值大说明CPU不足)
-
st:表示被偷走的CPU所占百分比(该值一般为0,不用关注)
-
us + sy + id + wa =100% 这个值只是约等于,是个近似值。
-
注意:需要关注的是r,b和wa这3列,io部分和bi和bo也是要经常参考的对象,如果磁盘io压力很大,这两列的数值会比较高(大于5千算高)。另外,当si和so两列的数值比较高并且不断变化时,说明内存不够了,内存中的数据频繁交换分区中,这往往对系统性能影响极大。
实例:
使用vmstat 1是每一秒钟动态显示一次,按ctrl+c结束显示;vmstat 1 5每一秒钟动态显示一次,显示五次就结束也就是五行。r b 下面的,动态显示一会大一会小说明交换分区和内存频繁的交换数据。原因内存不够了
3、 top命令
top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。
语法
top(选项)
选项
-b:以批处理模式操作; -c:显示完整的治命令; -d:屏幕刷新间隔时间; -I:忽略失效过程; -s:保密模式; -S:累积模式; -i<时间>:设置间隔时间; -u<用户名>:指定用户名; -p<进程号>:指定进程; -n<次数>:循环显示的次数。
top交互命令
在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。
h:显示帮助画面,给出一些简短的命令总结说明; k:终止一个进程; i:忽略闲置和僵死进程,这是一个开关式命令; q:退出程序; r:重新安排一个进程的优先级别; S:切换到累计模式; s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s; f或者F:从当前显示中添加或者删除项目; o或者O:改变显示项目的顺序; l:切换显示平均负载和启动时间信息; m:切换显示内存信息; t:切换显示进程和CPU状态信息; c:切换显示命令名称和完整命令行;查看具体的进程和命令 M:根据驻留内存大小进行排序; P:根据CPU使用百分比大小进行排序; T:根据时间/累计时间进行排序; w:将当前设置写入~/.toprc文件中。
实例
top - 09:44:56 up 16 days, 21:23, 1 user, load average: 9.59, 4.75, 1.92 Tasks: 145 total, 2 running, 143 sleeping, 0 stopped, 0 zombie Cpu(s): 99.8%us, 0.1%sy, 0.0%ni, 0.2%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 4147888k total, 2493092k used, 1654796k free, 158188k buffers Swap: 5144568k total, 56k used, 5144512k free, 2013180k cached
解释:
- top - 09:44:56[当前系统时间],
- 16 days[系统已经运行了16天],
- 1 user[个用户当前登录],
- load average: 9.59, 4.75, 1.92[系统负载,即任务队列的平均长度]
- Tasks: 145 total[总进程数],
- 2 running[正在运行的进程数],
- 143 sleeping[睡眠的进程数],
- 0 stopped[停止的进程数],
- 0 zombie[冻结进程数],
- Cpu(s): 99.8%us[用户空间占用CPU百分比],
- 0.1%sy[内核空间占用CPU百分比],
- 0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],
- 0.2%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比],
- 0.0%hi[],
- 0.0%st[],
- Mem: 4147888k total[物理内存总量],
- 2493092k used[使用的物理内存总量],
- 1654796k free[空闲内存总量],
- 158188k buffers[用作内核缓存的内存量]
- Swap: 5144568k total[交换区总量],(交互分区)
- 56k used[使用的交换区总量],
- 5144512k free[空闲交换区总量],
- 2013180k cached[缓冲的交换区总量],
- RES 物理内存大小,单位:kb字节
注意:查找出来僵尸进程命令:ps aux 看 stat那列,是Z的
kill -9 pid #一定可以杀死。 误杀了 就恢复不了了。-9是进程pid号
僵尸进程(zombie):子进程由父进程回收,没有父进程的则变成了僵尸进程
top -bn1 # 静态快照;静态显示,写脚本的时候用
按数字1显示所有CPU核心的资源使用
top -c # 更加详细的command显示
命令top,会三秒钟动态的刷新,第一行,查看文件有哪些信息。第二行,有多少个任务在运行。
4、 sar命令
yum install -y sysstat #安装sar包
sar -n DEV #网卡流量
sar -q #系统负载
sar -b # 磁盘读写
sar -f /var/log/sa/saxx #历史文件
nload命令
yum install -y epel-release #安装扩展源
yum install -y nload #安装 nload包
-o 是把显示结果二进制的语言写到文件里
使用命令ls /var/log/sa/下面有一个叫sa17的文件,是一个二进制文件只能用sar命令查看;
ls /var/log/sa/sar17中的sar17在安装sar包之后第二天才会生成。可以用cat命令查看。
一种文件内容只能用 -f filename 来查看, 另外一种可以直接cat查看
sar开头的文件是自动生成的
sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。
语法
sar(选项)(参数)
选项
-A:显示所有的报告信息; -b:显示I/O速率; -B:显示换页状态; -c:显示进程创建活动; -d:显示每个块设备的状态; -e:设置显示报告的结束时间; -f:从指定文件提取报告; -i:设状态信息刷新的间隔时间; -P:报告每个CPU的状态; -R:显示内存状态; -u:显示CPU利用率; -v:显示索引节点,文件和其他内核表的状态; -w:显示交换分区状态; -x:显示给定进程的状态。
参数
- 间隔时间:每次报告的间隔时间(秒);
- 次数:显示报告的次数。
实例
察看内存和交换空间的使用率:
sar -r Linux 2.4.20-8 (www.linuxde.net) 20130503 12:00:01 AM kbmemfree kbmemused %memused kbmemshrd kbbuffers kbcached 12:10:00 AM 240468 1048252 81.34 0 133724 485772 12:20:00 AM 240508 1048212 81.34 0 134172 485600 … 08:40:00 PM 934132 354588 27.51 0 26080 185364 Average: 324346 964374 74.83 0 96072 467559
kbmemfree与kbmemused字段分别显示内存的未使用与已使用空间,后面跟着的是已使用空间的百分比(%memused字段)。kbbuffers与kbcached字段分别显示缓冲区与系统全域的数据存取量,单位为KB。
观察系统部件10分钟,并对数据进行排序:
sar -o temp 60 10
安装sar包,命令:yum install -y sysstat
常见问题:安装不了
5、 nload命令
nload (监控网卡流量)
安装nload之前要先安装 epel-release,安装命令yum install -y epel-release
然后再安装 nload
显示一个动态的页面。按方向键可以切换网卡,按q退出
用途: 用来即时监看网路状态和各ip所使用的频宽
nload 默认分为上下两块:
上半部分是:Incoming也就是进入网卡的流量,
下半部分是:Outgoing,也就是从这块网卡出去的流量,
每部分都有当前流量(Curr),
平均流量(Avg),
最小流量(Min),
最大流量(Max),
总和流量(Ttl)这几个部分,看起来还是蛮直观的。
nload默认的是eth0网卡,如果你想监测eth1网卡的流量
#nload eth1
-a:这个好像是全部数据的刷新时间周期,单位是秒,默认是300.
-i:进入网卡的流量图的显示比例最大值设置,默认10240 kBit/s.
-m:不显示流量图,只显示统计数据。
-o:出去网卡的流量图的显示比例最大值设置,默认10240 kBit/s.
-t:显示数据的刷新时间间隔,单位是毫秒,默认500。
-u:设置右边Curr、Avg、Min、Max的数据单位,默认是自动变的.注意大小写单位不同!
h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc.
H|B|K|M|G H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.
-U:设置右边Ttl的数据单位,默认是自动变的.注意大小写单位不同(与-u相同)!
Devices:自定义监控的网卡,默认是全部监控的,使用左右键切换。
如只监控eth0命令:# nload eth0
使用 $ nload eth0 ,可以查看第一网卡的流量情况,显示的是实时的流量图, $ nload -m 可以同时查看多个网卡的流量情况。
先安装epel-release:yum install epel-release
安装nload包命令:yum install nload
运行nload,直接敲nload命令,第一行是网卡的名字,第一行最后的数字是的网卡的个数,按方向键向右的箭头切换,查看其他的网卡,eth1是内网网卡,eth0是外网网卡
常见问题:
1.安装不了sar包
这个都不能安装怎么回事?
答案:32位centos7 不支持epel-release
2.
安装错误。
答案:如果是64位,那说明你的yum不好用。是不是之前改动过yum, 比如你用了本地的yum源,还未切换回网络的源。
我的是163.本地源可以安装nload。但是另一个是网络的源才不可以安装
3.使用nload命令时,也安装了开展源epel-release,没有显示动态的页面,动态的进程。原因是没有跑进程?