Linux系统调优——系统整体运行状态排查
Posted diantong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统调优——系统整体运行状态排查相关的知识,希望对你有一定的参考价值。
(1).vmstat
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的整体状态值,包括服务器的CPU使用率,MEM内存使用,VMSwap虚拟内存交换情况,IO读写情况。
[root@youxi1 ~]# 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 3709568 2108 156248 0 0 1 0 20 18 0 0 100 0 0
说明:
procs(进程):
r 展示正在运行和等待运行的进程个数,当这个值超过CPU个数时,就会出现CPU瓶颈。
b 处在非中断睡眠状态的进程数。即等待IO的进程数量。
memory(内存):
swpd 已使用的虚拟内存大小。如果虚拟内存使用较多,可能是系统的物理内存比较吃紧,需要采取合适的方式来减少物理内存的使用。swpd不为0,并不意味物理内存吃紧,si、so的值长期为0,这也是没有问题的。
free 空闲的物理内存的大小
buff 用来做buffer(缓存,主要用于块设备缓存)的内存数,单位:KB
cache 用作缓存的内存大小。如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。单位:KB
swap(交换分区):
si 从磁盘写入到swap虚拟内存的交换页数量,单位:KB/秒。如果这个值大于0,表示物理内存不够用或者内存泄露了。
so 从swap虚拟内读出的数据。即从swap中的数据写入到磁盘的交换页数量,单位:KB/秒,如果这个值大于0,表示物理内存不够用或者内存泄露了。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。 当看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,这个是不正确的。不能光看这一点,还要结合si和so。如果free很少,但是si和so是0,那么不用担心,系统性能这时不会受到影响的。
io(这里指进出内存的数据):
bi 每秒从块设备接收到的块数,单位:块/秒 也就是读块设备。bi通常是读磁盘的数据
bo 每秒发送到块设备的块数,单位:块/秒 也就是写块设备。bo通常是写磁盘的数据
system(系统):
in 每秒的中断数,包括时钟中断。
cs 每秒的环境(上下文)切换次数。比如我们调用系统函数,就要进行上下文切换,而过多的上下文切换会浪费较多的cpu资源,这个数值应该越小越好。
cpu(使用cpu时间的百分比,最大100%):
us 用户CPU时间(非内核进程占用时间)(单位为百分比)。 us的值比较高时,说明用户进程消耗的CPU时间多
sy 系统使用的CPU时间(单位为百分比)。sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
id 空闲的CPU的时间(百分比),在Linux 2.5.41之前,这部分包含IO等待时间。
wa 等待IO的CPU时间,这个值为0 .这个指标意味着CPU在等待硬盘读写操作的时间,用百分比表示。wait越大则机器io性能就越差。说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
st 虚拟机占用cpu时间的百分比。如果centos系统上运行了kvm虚拟机,而kvm虚拟上又运行了几个虚拟机,那么这个值将显示这个几个正在运行的虚拟机从物理机中窃取CPU运行时间的百分比。
1)CPU利用率比例分配
us——用户态——65%~70%
sy——内核态——30%~35%
id——空闲——0%~5%
cs——Context Switches:上下文切换的数目直接关系到CPU 的使用率,如果CPU 利用率保持在上述均衡状态时,有大量的上下文切换是正常的。(上下文切换指的就是cpu中寄存器数据的写入和读出。每个进程在使用cpu时,都需要把自己的数据先写入cpu的缓存(寄存器)中,然后cpu才能根据缓存中的数据来计算。)
2)指定刷新时间间隔,连续输出
[root@youxi1 ~]# vmstat 1 10 //时间间隔1秒,连输输出10次 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 1778088 2108 125992 0 0 5 0 73 76 0 0 100 0 0 0 0 0 1778088 2108 126024 0 0 0 0 277 277 0 0 100 0 0 0 0 0 1778088 2108 126024 0 0 0 0 279 281 0 0 100 0 0 0 0 0 1778088 2108 126024 0 0 0 4 327 331 0 0 100 0 0 0 0 0 1778088 2108 126024 0 0 0 0 275 283 0 0 100 0 0 0 0 0 1778088 2108 126024 0 0 0 0 270 277 0 0 100 0 0 0 0 0 1778088 2108 126024 0 0 0 0 268 273 0 0 100 0 0 0 0 0 1778088 2108 126024 0 0 0 0 275 287 0 0 100 0 0 0 0 0 1778088 2108 126024 0 0 0 1 251 268 0 0 100 0 0 0 0 0 1778088 2108 126028 0 0 0 0 274 295 0 0 100 0 0
用来连续查看系统整体运行状态,主要可以注意查看r、free、si、so、bi、bo、us、id、wa(wa大于40%就要查看bi、bo情况了)。
(2).sar
sar命令需要安装sysstat工具包。sysstat工具包可以把检查到的信息保存下来,存在/var/log/sa目录下。sar 默认显示每10分钟统计一次状态信息(从装sysstat包开始)。
[root@youxi1 ~]# yum -y install sysstat
1)命令格式
sar [ 选项 ] [ <时间间隔> [ <次数> ] ]
如果有时间间隔和次数则显示当前的情况,如果没有则显示今日的所有情况。
2)选项
常用选项
-A:所有报告的总和,相当于选项-bBdFHqrRSuvwWy -I SUM -I XALL -m ALL -n ALL -u ALL -P ALL -d:显示磁盘的情况 -f [文件名]:查看由-o [文件名]创建的文件,文件名默认参数是当前的每日数据文件/var/log/sa/sadd -n <关键词>:显示网络的情况,关键字可以是DEV、EDEV、NFS、NFSD、SOCK、IP、EIP、ICMP、EICMP、TCP、ETCP、UDP、SOCK6、IP6、EIP6、ICMP6、EICMP6、UDP6 -o [文件名]:以二进制形式保存正在读取得数据,文件名默认参数是当前的每日数据文件/var/log/sa/sadd -u [ALL]:显示CPU情况,如果指定ALL,则显示所有参数。
有可能用到的选项
-b:缓冲区使用情况 -c:每秒创建进程的个数 -v:进程、节点、文件和锁表状态 -r:内存使用情况(详细) -R:内存使用情况 -y:终端设备活动情况 -W:swap(交换内存)情况 -P [ALL | CPU编号]:查看指定cpu使用情况 -w:任务创建和系统切换情况
3)实例
每2秒采样一次,连续采样5次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件cpu.sar中。
[root@youxi1 ~]# sar -u 2 5 -o cpu.sar Linux 3.10.0-957.el7.x86_64 (youxi1) 2019年08月04日 _x86_64_ (4 CPU) 01时30分28秒 CPU %user %nice %system %iowait %steal %idle 01时30分30秒 all 0.00 0.00 0.25 0.00 0.00 99.75 01时30分32秒 all 0.00 0.00 0.00 0.00 0.00 100.00 01时30分34秒 all 0.00 0.00 0.12 0.00 0.00 99.88 01时30分36秒 all 0.00 0.00 0.00 0.00 0.00 100.00 01时30分38秒 all 0.00 0.00 0.00 0.00 0.00 100.00 平均时间: all 0.00 0.00 0.08 0.00 0.00 99.92
说明:
输出项 | 详细说明 |
CPU | all 表示统计信息为所有 CPU 的平均值。 |
%user | 显示在用户级别(application)运行使用 CPU 总时间的百分比。 |
%nice | 显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。 |
%system | 在核心级别(kernel)运行所使用 CPU 总时间的百分比。 |
%iowait | 显示用于等待I/O操作占用 CPU 总时间的百分比。 |
%steal | 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。 |
%idle | 显示 CPU 空闲时间占用 CPU 总时间的百分比。 |
在所有的显示中,我们应主要注意%wio和%idle,%wio的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
回头查看保存的文件
[root@youxi1 ~]# sar -u -f cpu.sar Linux 3.10.0-957.el7.x86_64 (youxi1) 2019年08月04日 _x86_64_ (4 CPU) 01时30分28秒 CPU %user %nice %system %iowait %steal %idle 01时30分30秒 all 0.00 0.00 0.25 0.00 0.00 99.75 01时30分32秒 all 0.00 0.00 0.00 0.00 0.00 100.00 01时30分34秒 all 0.00 0.00 0.12 0.00 0.00 99.88 01时30分36秒 all 0.00 0.00 0.00 0.00 0.00 100.00 01时30分38秒 all 0.00 0.00 0.00 0.00 0.00 100.00 平均时间: all 0.00 0.00 0.08 0.00 0.00 99.92
4)查看sar的计划任务,并读取日志
查看sar的计划任务
[root@youxi1 ~]# cat /etc/cron.d/sysstat # Run system activity accounting tool every 10 minutes */10 * * * * root /usr/lib64/sa/sa1 1 1 //每10分钟生成一次 # 0 * * * * root /usr/lib64/sa/sa1 600 6 & # Generate a daily summary of process accounting at 23:53 53 23 * * * root /usr/lib64/sa/sa2 -A
读取日志
[root@youxi1 ~]# ls /var/log/sa //查看日志文件 sa03 sa04 sar03 [root@youxi1 ~]# sar -n DEV -f /var/log/sa/sa04 //读取指定日志文件的DEV情况 Linux 3.10.0-957.el7.x86_64 (youxi1) 2019年08月04日 _x86_64_ (4 CPU) 00时00分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 00时10分01秒 lo 9.89 9.89 4.17 4.17 0.00 0.00 0.00 00时10分01秒 ens33 0.04 2.02 0.01 0.12 0.00 0.00 0.00 00时20分01秒 lo 9.88 9.88 4.16 4.16 0.00 0.00 0.00 00时20分01秒 ens33 0.06 2.03 0.01 0.14 0.00 0.00 0.00 00时30分01秒 lo 9.90 9.90 4.16 4.16 0.00 0.00 0.00 00时30分01秒 ens33 0.12 2.09 0.01 0.19 0.00 0.00 0.00 00时40分01秒 lo 9.86 9.86 4.16 4.16 0.00 0.00 0.00 00时40分01秒 ens33 0.02 2.01 0.00 0.12 0.00 0.00 0.00 00时50分01秒 lo 9.88 9.88 4.16 4.16 0.00 0.00 0.00 00时50分01秒 ens33 0.02 2.01 0.00 0.12 0.00 0.00 0.00 01时00分01秒 lo 9.91 9.91 4.16 4.16 0.00 0.00 0.00 01时00分01秒 ens33 0.02 2.01 0.00 0.12 0.00 0.00 0.00 01时10分01秒 lo 9.91 9.91 4.17 4.17 0.00 0.00 0.00 01时10分01秒 ens33 0.02 2.01 0.00 0.12 0.00 0.00 0.00 01时20分01秒 lo 9.91 9.91 4.16 4.16 0.00 0.00 0.00 01时20分01秒 ens33 0.01 2.01 0.00 0.12 0.00 0.00 0.00 01时30分01秒 lo 9.83 9.83 4.19 4.19 0.00 0.00 0.00 01时30分01秒 ens33 0.02 2.01 0.00 0.12 0.00 0.00 0.00 01时40分01秒 lo 9.94 9.94 4.17 4.17 0.00 0.00 0.00 01时40分01秒 ens33 0.08 2.06 0.01 0.12 0.00 0.00 0.00 01时50分01秒 lo 9.88 9.88 4.15 4.15 0.00 0.00 0.00 01时50分01秒 ens33 0.01 2.01 0.00 0.12 0.00 0.00 0.00 02时00分01秒 lo 9.86 9.86 4.16 4.16 0.00 0.00 0.00 02时00分01秒 ens33 0.02 2.01 0.00 0.12 0.00 0.00 0.00 平均时间: lo 9.89 9.89 4.16 4.16 0.00 0.00 0.00 平均时间: ens33 0.04 2.02 0.00 0.13 0.00 0.00 0.00 11时52分01秒 LINUX RESTART 12时00分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 12时10分01秒 lo 9.88 9.88 4.16 4.16 0.00 0.00 0.00 12时10分01秒 ens33 0.21 2.20 0.02 0.16 0.00 0.00 0.00 12时20分01秒 lo 9.91 9.91 4.16 4.16 0.00 0.00 0.00 12时20分01秒 ens33 0.38 2.31 0.03 0.28 0.00 0.00 0.00 12时30分01秒 lo 9.88 9.88 4.16 4.16 0.00 0.00 0.00 12时30分01秒 ens33 0.07 2.06 0.01 0.15 0.00 0.00 0.00 12时40分01秒 lo 9.92 9.92 4.16 4.16 0.00 0.00 0.00 12时40分01秒 ens33 0.97 2.88 0.09 0.57 0.00 0.00 0.00 12时50分01秒 lo 9.91 9.91 4.16 4.16 0.00 0.00 0.00 12时50分01秒 ens33 0.31 2.27 0.02 0.33 0.00 0.00 0.00 13时00分01秒 lo 9.94 9.94 4.17 4.17 0.00 0.00 0.00 13时00分01秒 ens33 0.03 2.02 0.00 0.12 0.00 0.00 0.00 13时10分01秒 lo 9.92 9.92 4.16 4.16 0.00 0.00 0.00 13时10分01秒 ens33 0.02 2.01 0.00 0.12 0.00 0.00 0.00 13时20分01秒 lo 9.92 9.92 4.16 4.16 0.00 0.00 0.00 13时20分01秒 ens33 0.02 2.01 0.00 0.12 0.00 0.00 0.00 13时30分01秒 lo 9.92 9.92 4.16 4.16 0.00 0.00 0.00 13时30分01秒 ens33 0.13 2.09 0.01 0.13 0.00 0.00 0.00 13时40分01秒 lo 9.92 9.92 4.16 4.16 0.00 0.00 0.00 13时40分01秒 ens33 0.06 2.04 0.00 0.12 0.00 0.00 0.00 13时50分01秒 lo 9.89 9.89 4.16 4.16 0.00 0.00 0.00 13时50分01秒 ens33 0.02 2.01 0.00 0.12 0.00 0.00 0.00 14时00分01秒 lo 9.90 9.90 4.16 4.16 0.00 0.00 0.00 14时00分01秒 ens33 0.02 2.02 0.00 0.12 0.00 0.00 0.00 14时10分01秒 lo 9.88 9.88 4.16 4.16 0.00 0.00 0.00 14时10分01秒 ens33 0.02 2.01 0.00 0.12 0.00 0.00 0.00 平均时间: lo 9.91 9.91 4.16 4.16 0.00 0.00 0.00 平均时间: ens33 0.17 2.15 0.02 0.19 0.00 0.00 0.00
sar最大特点是可以监控所有状态,还可以查看摸个时间段的运行情况
[root@youxi1 ~]# sar -s 12:00:00 -e 12:20:00 -f /var/log/sa/sa04 Linux 3.10.0-957.el7.x86_64 (youxi1) 2019年08月04日 _x86_64_ (4 CPU) 12时00分01秒 CPU %user %nice %system %iowait %steal %idle 12时10分01秒 all 0.01 0.00 0.05 0.01 0.00 99.94 平均时间: all 0.01 0.00 0.05 0.01 0.00 99.94 [root@youxi1 ~]# sar -s 12:00:00 -e 12:20:00 -f /var/log/sa/sa04 -n DEV Linux 3.10.0-957.el7.x86_64 (youxi1) 2019年08月04日 _x86_64_ (4 CPU) 12时00分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 12时10分01秒 lo 9.88 9.88 4.16 4.16 0.00 0.00 0.00 12时10分01秒 ens33 0.21 2.20 0.02 0.16 0.00 0.00 0.00 平均时间: lo 9.88 9.88 4.16 4.16 0.00 0.00 0.00 平均时间: ens33 0.21 2.20 0.02 0.16 0.00 0.00 0.00
https://blog.csdn.net/volitationlong/article/details/81741754
以上是关于Linux系统调优——系统整体运行状态排查的主要内容,如果未能解决你的问题,请参考以下文章
51CTO学习笔记--Linux运维故障排查思路与系统调优技巧视频课程(高俊峰)