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系统调优——系统整体运行状态排查(七)的更多相关文章
- Linux系统调优相关工具
一.系统调优概述 系统的运行状况: CPU -> MEM -> DISK*-> NETWORK -> 应用程序调优 分析是否有瓶颈(依据当前应用需求) 调优(把错误的调正确) ...
- linux系统调优工具
系统调优思路 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对 OS 各子系统达到一种平衡的定义.具体步骤如下: 1. 系统的运行状况: CPU -> MEM -> D ...
- Linux系统调优——CPU(一)
(1).系统调优思路 性能优化就是找到系统处理中的瓶颈以及去除这些的过程,性能优化其实是对OS 各子系统达到一种平衡的定义.具体步骤如下: 1. 系统的运行状况: CPU -> MEM -& ...
- Linux系统调优1
Linux在进行系统调优的时候,首先要考虑整个操作系统的结构,然后针对各个部分进行优化,下面展示一个Linux系统的各个组成部分: 有上图可以看出,我们可以调整的有应用程序,库文件,内核,驱动,还有硬 ...
- Linux低延迟服务器系统调优
最近做了一些系统和网络调优相关的测试,达到了期望的效果,有些感悟.同时,我也发现知乎上对Linux服务器低延迟技术的讨论比较欠缺(满嘴高并发现象):或者对现今cpu + 网卡的低延迟潜力认识不足(动辄 ...
- 大数据集群Linux CentOS 7.6 系统调优篇
大数据集群Linux CentOS 7.6 系统调优篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设置主机hosts文件 1>.修改主机名 [root@node100 ...
- linux_系统调优
linux如何调优? 1. 关闭SELLinux功能,美国国家安全局对于强制访问控制实现,生产场景也是关闭 cat /etc/selinux/config | grep '^SELINUX=' # 查 ...
- Sybase数据库应用系统调优的五大领域
Sybase数据库应用系统调优的五大领域 2011/3/14/13:49来源:慧聪it网 本 文以“某大型商业银行的网上银行系统”这一很具有典型意义的企业级大型Sybase数据库应用系统为例,涉及了数 ...
- fuse3 编译相关简要记录 与 fuse3 系统调优;
下面是在使用fuse3 编译bbfs 过程中一些参数,用于备忘: FUSE_CFLAGS="-I/usr/local/include/fuse3" FUSE_LIBS=" ...
随机推荐
- C#向数据库中插入或更新null空值
一.在SQL语句中直接插入null或空字符串“” int? item = null; item == null ? "null" : item.ToString(); item = ...
- Visual Studio 2017 许可证已过期解决方案
1.卸载并重安VS2017 2.安装后打开VS2017,点击帮助=>注册产品,输入序列号NJVYC-BMHX2-G77MM-4XJMR-6Q8QF(企业版), KBJFW-NXHK6-W4WJM ...
- ascii、unicode、utf-8、gbk 区别?
发展史: https://www.cnblogs.com/houxt/p/11250878.html python2内容进行编码(默认ascii),而python3对内容进行编码的默认为utf-8. ...
- [Kubernetes] Defining a Pod with YAML
1. Define a yml file: nginx.pod.yml: apiVersion: v1 kind: Pod metadata: name: my-nginx labels: app: ...
- 014——C#新建文件夹
(一)如果不存在路径就新建文件夹 string directory = @"C:\Users\Administrator\Desktop\温控数据\"; if (!Director ...
- 洛谷 P2279 [HNOI2003]消防局的设立 题解
每日一题 day34 打卡 Analysis 这道题的正解本来是树形dp,但要设5个状态,太麻烦了.于是我就用贪心试图做出此题,没想到还真做出来了. 考虑当前深度最大的叶子结点,你肯定要有一个消防局去 ...
- MongoDB dataSize如何比storageSize更大?
原文 https://stackoverflow.com/questions/34054780/how-can-mongodb-datasize-be-larger-than-storages ...
- 布局 Bootstrap Table的 文本内容 垂直居中
原文:https://blog.csdn.net/peng_hong_fu/article/details/70662979 样式(注意样式优先级): #div-component-info .tab ...
- GDB十分钟教程【转载于网络爱好者】
本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者. GDB是一个由GNU开源组织发布的.UNIX/LINUX操作系统下的.基于命令行的.功能强大的程序调 ...
- jquery.nicescroll.js Unable to preventDefault inside passive event listener due to target being treated as passive.
解决办法就是:https://github.com/bestjhh/Plugin 下载替换. 参考: https://github.com/bestjhh/Plugin https://blog.cs ...