2024年Linux最新Linux-常用的系统监控_linux 系统监系统(1)

3、swap

**si:**表示从磁盘调入内存,也就是内存进入内存交换区的内存大小;通俗的 讲就是 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存 不够用或者内存泄露了,要查找耗内存进程解决掉。

**so:**表示由内存进入磁盘,也就是由内存交换区进入内存的内存大小。 注意:一般情况下si、so的值都为0,如果si、so的值长期不为0,则说明系 统内存不足,需要增加系统内存 4、io

**bi:**表示从块设备每秒读取的块数量 bo:表示每秒写到块设备的块数量 注意:如果bi+bo的值过大,且wa值较大,则表示系统磁盘IO瓶颈

5、system

in: 表示每秒的中断数,包括时钟

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

注意: 这两个值越大,则由内核消耗的CPU就越多

6、CPU

**us:**表示用户进程消耗的CPU时间百分比,us值越高,说明用户进程消耗 CPU时间越多,如果长期大于50%,则需要考虑优化程序或者算法

**sy:**表示系统内核进程消耗的CPU时间百分比,一般来说us+sy应该小于 80%,如果大于80%,说明可能存在CPU瓶颈

**id:**表示CPU处在空间状态的时间百分比

**wa:**表示IP等待所占用的CPU时间百分比,wa值越高,说明I/O等待越严 重,根据经验wa的参考值为20%,如果超过20%,说明I/O等待严重,引起 I/O等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者监控器 的贷款瓶颈(主要是块操作)造成的

综上所述,如果评估CPU,需要重点关注procs项的r列值和CPU的us、 sy、wa列的值

使用实践:

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

[root@localhost ~]# vmstat -SM 2 2
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    616      0    276    0    0    71    18   38   75  0  0 100  0  0
 0  0      0    616      0    276    0    0     0     0   21   34  0  0 100  0  0

4.mpstat

是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU 的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里, 其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。 mpstat最大的特点是:可以查看多核心cpu中每个计算核心的统计数据; 而类似工具vmstat只能查看系统整体cpu情况。

需要安装:sysstat

[root@localhost ~]# yum -y install sysstat

参数:

-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值 internal 相邻的 两次采样的间隔时间、 count 采样的次数,count只能和delay一起使用 当 没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval 时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前 一个interval时间段的平均信息。

实例:每2秒查看一次,共查看5次

[root@localhost ~]# mpstat 2 5
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)     2022年10月04日  _x86_64_        (1 CPU)

08时09分46秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
08时09分48秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
08时09分50秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
08时09分52秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
08时09分54秒  all    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50
08时09分56秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
平均时间:  all    0.00    0.00    0.10    0.00    0.00    0.00    0.00    0.00    0.00   99.90

查看每个cpu核心的详细当前运行状况信息

[root@base ~]# mpstat -P ALL 2 3

参数详解:

%user 在internal时间段里,用户态的CPU时间(%),不包含nice值为 负进程 (usr/total)*100 %nice 在internal时间段里,nice值为负进程的CPU时间(%) (nice/total)*100

%sys 在internal时间段里,内核时间(%) (system/total)*100

%iowait 在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100

%irq 在internal时间段里,硬中断时间(%) (irq/total)*100

%soft 在internal时间段里,软中断时间(%) (softirq/total)*100

%idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何 原因而空闲的时间闲置时间(%) (idle/total)*100

5.iostat

iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇 报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样, iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整 体情况进行分析。能查看到系统IO状态信息,从而确定IO性能是否存在瓶颈

选项:
-c:仅显示CPU使用情况;

-d:仅显示设备利用率;

-k:显示状态以千字节每秒为单位,而不使用块每秒;

-m:显示状态以兆字节每秒为单位;

-p:仅显示块设备和所有被使用的其他分区的状态;

-t:显示每个报告产生时的时间;

-V:显示版号并退出;

-x:显示扩展状态。

[root@localhost ~]# iostat
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)     2022年10月04日  _x86_64_        (1 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.06    0.00    0.17    0.00    0.00   99.77

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               2.38        61.34        15.85     210066      54291
sdb               0.16         1.15         0.00       3924          0
md0               0.02         0.13         0.00        456          0
md1               0.02         0.13         0.00        456          0

详细说明:第一行是系统信息和监测时间,第二行和第三行显示CPU使 用情况(具体内容和mpstat命令相同)

tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输”意思是“一次I/O请 求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小 是未知的。

kB_read/s:每秒从设备(drive expressed)读取的数据量;

kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;

kB_read:读取的总数据量;

kB_wrtn:写入的总数量数据量;

6.sar

**sar(System Activity Reporter系统活动情况报告)**是目前 Linux上最为全 面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包 括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使 用状况、进程活动及IPC有关的活动等。

sar命令常用格式
sar [options] [-A] [-o file] t [n]
其中:
t为采样间隔,n为采样次数,默认值是1;
-o file表示将命令结果以二进制格式存放在文件中,file 是文件名。
options 为命令行选项,sar命令常用选项如下:
-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息

实例:

1、CPU资源监控 例如,每10秒采样一次,连续采样3次,观察CPU 的使用情况,并将采样结 果以二进制形式存入当前目录下的文件test中,需键入如下命令:

[root@localhost ~]# sar -u -o test 10 3
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)     2022年10月04日  _x86_64_        (1 CPU)

08时17分01秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
08时17分11秒     all      0.00      0.00      0.00      0.00      0.00    100.00
08时17分21秒     all      0.00      0.00      0.20      0.00      0.00     99.80
08时17分31秒     all      0.00      0.00      0.10      0.00      0.00     99.90
平均时间:     all      0.00      0.00      0.10      0.00      0.00     99.90

输出项说明:

CPU:all 表示统计信息为所有 CPU 的平均值。

%user:显示在用户级别(application)运行使用 CPU 总时间的百分 比。

%nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分 比。

%system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。

%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。

%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。

%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。

  1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈

  2. %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应 加大内存容量

  3. %idle 的值持续低于1,则系统的CPU处理能力相对较低,表明系统中 最需要解决的资源是 CPU

//如果要查看二进制文件test中的内容,需键入如下sar命令:

[root@localhost ~]# sar -u -f test
Linux 3.10.0-514.el7.x86_64 (localhost.localdomain)     2022年10月04日  _x86_64_        (1 CPU)

07时47分17秒     CPU     %user     %nice   %system   %iowait    %steal     %idle
07时47分27秒     all      0.10      0.00      0.10      0.00      0.00     99.80
07时47分37秒     all      0.00      0.00      0.10      0.00      0.00     99.90
07时47分39秒     all      0.00      0.00      0.00      0.00      0.00    100.00
08时17分01秒     all      0.01      0.00      0.06      0.00      0.00     99.93
08时17分11秒     all      0.00      0.00      0.00      0.00      0.00    100.00
08时17分21秒     all      0.00      0.00      0.20      0.00      0.00     99.80
08时17分31秒     all      0.00      0.00      0.10      0.00      0.00     99.90
平均时间:     all      0.01      0.00      0.06      0.00      0.00     99.93

总结:

要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来

怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看

怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看

怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看

7.iotop

iotop命令是一个用来监视磁盘I/O使用状况的top类工具。iotop具有与top 相似的UI,其中包括PID、用户、I/O、进程等相关信息。Linux下的IO统计 工具如iostat,nmon等大多数是只能统计到per设备的读写情况,如果你想 知道每个进程是如何使用IO的就比较麻烦,使用iotop命令可以很方便的查看。

实时观察磁盘io情况,可以观察到哪个进程占用I/O

[root@localhost ~]# yum -y install iotop

选项:

-o:只显示有io操作的进程
-b:批量显示,无交互,主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid。
-u USER:监控的进程用户。

iotop常用快捷键:

  1. 左右箭头:改变排序方式,默认是按IO排序。

  2. r:改变排序顺序。

  3. o:只显示有IO输出的进程。

  4. p:进程/线程的显示方式的切换。

  5. a:显示累积使用量。

  6. q:退出。

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值