使用w查看系统负载
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数
如果一个进程满足以下条件则其就会位于运行队列中:
它没有在等待I/O操作的结果
它没有主动进入等待状态(也就是没有调用'wait')
没有被停止(例如:等待终止)
1、直接输出w
[root@centos7 ~]# w
第一行 15:02:01 up 25 min, 3 users, load average: 0.00, 0.01, 0.04
第二行 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
第三行 root tty1 14:36 25:05 0.01s 0.01s -bash
第四行 root pts/0 192.168.100.100 14:37 23:05 9.18s 9.17s top
第五行 root pts/1 192.168.100.100 15:01 1.00s 0.04s 0.02s w
第一行:当前系统时间,up 25min:启动25分钟;3 users:目前登录几个用户;load average:系统负载:1分钟 5分钟 15分钟 和cpu有关系,单位时间内使用cpu活动的进程有多少个,最理想的状态:cpu个数(逻辑cpu,不是物理cpu),即负载值不超过1(cpu个数),一分钟查看的数字最能体现当前负载情况
[root@centos7 ~]# cat /proc/cpuinfo
processor: 0
0:表示一颗,1表示两颗
2、uptime和w一样
[root@centos7 ~]# uptime
15:13:28 up 37 min, 4 users, load average: 0.00, 0.01, 0.04
vmstat命令
什么原因导致cpu不正常了,系统的瓶颈在哪里,通过vmstat查看
[root@centos7 ~]# vmstat
进程 内存 交换分区 磁盘IO 系统 cpu
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 245120 948 120364 0 0 37 4 38 64 0 1 99 0 0
每一秒显示一次,只需要显示5次
[root@centos7 ~]# vmstat 1 5
只需要关注:r:有多少个进程处于run状态;1个cpu处理10个进程;那么cpu轮流排队处理进程,只要排队就是r的状态 ;当这个值超过了CPU数目,就会出现CPU瓶颈了;
如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。b: 阻塞的进程;被网络,硬盘显示处理等待状态,卡死了,block;有多少个进程在等待
swapd:当数字不停变换,表示内存不够;
如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。si:有多少kb数据从swap进入到内存中
so:有多少从内存出来的到swap
bi:从磁盘读,判断磁盘读
bo:从磁盘写,判断磁盘写
us:用户占用cpu,比如mysql,http,表示用户态的资源,长时间大于50,表示资源不够,一共是100
sy:系统态
id:空闲的
us+sy+id=100
wa:等待cpu的百分百,有多少进程在等待,这列很大表示cpu不够用
top命令
查看系统具体哪个进程使用情况
默认3秒显示一次动态的刷新
Tasks: 350 total, 2 running, 348 sleeping, 0 stopped, 0 zombie
总共的任务 2个在运行 348在休眠 停止 主进程不存在,只有子进程运行
cpu最高的在前面;按P用cpu排序
mem:按M排序
top -bn1:一次性的把top列出来
top -c:更加详细的command显示
kill -9 PID
sar命令
监控系统状态
1、yum install -y sysstat
/var/log/sa/sa29 每隔一段时间生成的日志
[root@centos7 ~]# sar -n DEV -f /var/log/sa/sa29 (这个是二进制文件)查看当天的日志,也可以一个月内的日志
可以直接cat sar -n DEV -f /var/log/sa/sar29
2、监控网卡流量
-n (network):网卡设备
1:表示1秒查看一次
[root@centos7 ~]# sar -n DEV 1
第一列:时间
第二列:网卡名称
第三列(rxpck/s):每秒接收的数据包大小;几千是正常的,上万就得关注了
第四列(txpck/s):每秒发送的数据包大小
rxkB/s txkB/s :接收到的数据流量和发送的数据流量,单位是kB/s
rxcmp/s txcmp/s rxmcst/s:没什么意义
Linux 3.10.0-327.el7.x86_64 (centos7) 10/29/2017 _x86_64_(1 CPU)
07:09:44 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:09:45 PM eno16777736 1.01 1.01 0.06 0.17 0.00 0.00 0.00
07:09:45 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07:09:45 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
07:09:46 PM eno16777736 1.00 1.00 0.06 0.37 0.00 0.00 0.00
07:09:46 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
3、查看系统负载
[root@centos7 ~]# sar -q 1 5
runq-sz:运行队列的长度(等待运行的进程数)。
plist-sz:进程列表中进程(processes)和线程(threads)的数量。
ldavg-1:最后 1 分钟的系统平均负载(System load average)。
ldavg-5:过去 5 分钟的系统平均负载。
ldavg-15:过去 15 分钟的系统平均负载。
12:16:41 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
12:16:44 PM 0 147 0.00 0.01 0.00
12:16:47 PM 0 147 0.00 0.01 0.00
12:16:50 PM 0 147 0.00 0.01 0.00
Average: 0 147 0.00 0.01 0.00
4、监控cpu
[root@test fc]# sar -u 1 3
%usr:用户进程消耗的 CPU 时间百分比。
%nice: 运行正常进程消耗的 CPU 时间百分比。
%system:系统进程消耗的 CPU 时间百分比。
%iowait: I/O 等待所占 CPU 时间百分比。
%idle: CPU 空闲状态的时间百分比。
Linux 2.6.32-573.el6.x86_64 (test) 11/02/2017 _x86_64_ (4 CPU)
12:09:50 PM CPU %user %nice %system %iowait %steal %idle
12:09:51 PM all 0.00 0.00 0.25 0.00 0.00 99.75
12:09:52 PM all 0.00 0.00 0.00 0.00 0.00 100.00
12:09:53 PM all 0.00 0.00 0.25 0.00 0.00 99.75
Average: all 0.00 0.00 0.17 0.00 0.00 99.83
总结:在所有的显示中,我们应主要注意%iowait和%idle, %iowait的值过高,表示硬盘存在 I/O 瓶颈, %idle值高,表示 CPU 较空闲,如果%idle值高但系统响应慢时,有可能是 CPU 等待分配内存, 此时应加大内存容量。 %idle 值如果持续低于 10,那么系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。
5、IO传输速率的监控
[root@test fc]# sar -b 3 3
Linux 2.6.32-573.el6.x86_64 (test) 11/02/2017 _x86_64_ (4 CPU)
tps:每秒钟物理设备的 I/O 传输总量。
rtps:每秒钟从物理设备读入的数据总量。
wtps:每秒钟向物理设备写入的数据总量。
bread/s:每秒钟从物理设备读入的数据量,单位为 块/s。
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s。
12:14:15 PM tps rtps wtps bread/s bwrtn/s
12:14:18 PM 0.00 0.00 0.00 0.00 0.00
12:14:21 PM 0.00 0.00 0.00 0.00 0.00
12:14:24 PM 0.00 0.00 0.00 0.00 0.00
Average: 0.00 0.00 0.00 0.00 0.00
总结:
要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
怀疑 CPU 存在瓶颈,可用 sar -u 和 sar -q 等来查看
怀疑内存存在瓶颈,可用 sar -B、 sar -r 和 sar -W 等来查看
怀疑 I/O 存在瓶颈,可用 sar -b、 sar -u 和 sar -d 等来查看
nload命令
1、[root@centos7 ~]# yum install epel-release
2、[root@centos7 ~]# yum install nload
3、[root@centos7 ~]# nload
可以查看当前的,平均的,最大的,最小的,总共的带宽