Linux-常用的系统监控_linux 系统监系统

[root@localhost ~]# uptime
 07:57:15 up 41 min,  1 user,  load average: 0.00, 0.01, 0.04

系统平均负载是指在特定时间间隔内运行队列中的平均进程数。如果每个 CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。如果 每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。如果你的 linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被 充分使用了

2.free

可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用 的内存缓冲区。

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           976M         81M        616M        7.0M        277M        730M
Swap:          2.0G          0B        2.0G

3.vmstat

命令是最常见的Linux/Unix监控工具,含义为显示虚拟内存状态(“Virtual Memory Statistics”),但也可以展现给定时间间隔的服务器的状态值,包括 服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。

选项:

-V:显示vmstat版本信息

-n:只在开始时显示一次各字段名称

-a:显示活跃和非活跃内存

-d:显示各个磁盘相关统计信息

-D:显示磁盘总体信息

-p:显示指定磁盘分区统计信息

-s:显示内存相关统计信息及多种系统活动数量

-m:显示slabinfo

-t:在输出信息的时候也将时间一并输出出来

-S:使用指定单位显示。参数有k、K、m、M,分别代表1000、 1024、1000000、1048576字节(byte)。默认单位为 K(1024bytes)

delay:刷新时间间隔。如果不指定,只显示一条结果

count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这 时刷新次数为无穷

[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
 1  0      0 631624    896 283516    0    0    84    21   41   82  0  0 100  0  0

vmstat各字段说明:

1、procs

**r:**表示运行和等待CPU时间片的进程数(就是说多少个进程真的分配到 CPU),这个值如果长期大于系统CPU个数,说明CPU不足,需要增加CPU

**b:**表示在等待资源的进程数,比如正在等待I/O或者内存交换等。

2、memory

**swap:**表示切换到内存交换区的内存大小,即虚拟内存已使用的大小(单 位KB),如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄 露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

**free:**表示当前空闲的物理内存

**buff:**表示buffers cached内存大小,也就是缓冲大小,一般对块设备的 读写才需要缓冲 Cache:表示page cached的内存大小,也就是缓存大小,一般作为文件系 统进行缓冲,频繁访问的文件都会被缓存,如果cache值非常大说明缓存文 件比较多,如果此时io中的bi比较小,说明文件系统效率比较好

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

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值