Linux系统环境监测

Linux系统环境主要监测CPU、内存、磁盘I/O和网络流量。

1. CPU

(1) 查看CPU的负载情况:uptime

可以通过uptime查看系统整体的负载情况。

如果服务器的CPU为1核心,则1分钟的系统平均负载 >=3 说明负载过高,如果服务器的CPU为4核心,则load average中的数字 >=12 负载过高。

  1. root@ubuntu1804:~# uptime
  2. 09:57:53 up 7:17, 2 users, load average: 0.10, 0.03, 0.01
  3. 09:57:53 # 当前时间
  4. up 7:17 # 主机已运行时间
  5. 2 users # 当前登录用户数
  6. load average: 0.10, 0.03, 0.01 # 系统负载,即任务队列的平均长度。 三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值

(2)linux中查看cpu的逻辑数量:

  1. ehigh@ubuntu:~$ grep -c 'processor' /proc/cpuinfo
  2. 8

CPU:central processing unit,中央处理器。

  1. 插槽:表示电脑上插了几个物理cpu
  2. 内核:表示这个物理cpu有几个核心,一个核心就是一个cpu
  3. 逻辑处理器:逻辑上的处理器数量,通过超线程技术将一个处理器模拟出两个处理器出来。
  4. 超线程技术:在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程

cpu发展历程:

  1. 刚开始一个物理cpu只有一个核心,通过提高核心的工作频率来提高性能,但是会产生过多的热量。
  2. 后面因特尔发明了超线程技术,在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程
  3. 后面采用多核架构,在一个物理cpu里面放多个核心,好似一辆汽车放多个发动机。

例如:服务器上面插了一个物理cpu是4核8线程。表示的是这个cpu又4个核心,支持超线程技术,逻辑cpu就是8个。

并发

(3)查看系统中使用CPU最多的进程:top

使用top命令,按下大写的P,可以按cpu使用率排序

  1. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  2. 720 root 20 0 473464 22060 19128 S 1.7 0.2 119:55.14 sunloginclient
  3. 3590 emqx 20 0 3483576 201492 74484 S 1.3 2.0 64:39.37 beam.smp
  4. 984 root 20 0 2754328 50696 5192 S 1.0 0.5 77:32.96 taosd

进程的cpu占用能否超过100%?

  1. 如果你的4核心的cpu,你可以运行400%

判断CPU当前忙不忙?

要结合cpu使用率和队列一起看,如果一分钟内cpu的队列数超过3并且cpu的使用率也很高,说明当前cpu很忙。

(4)查看cpu的使用率:

使用top命令,然后按数字1就可以显示每个cpu的详细信息

  1. top - 10:48:44 up 5 days, 1:15, 1 user, load average: 0.10, 0.14, 0.10
  2. Tasks: 398 total, 1 running, 397 sleeping, 0 stopped, 0 zombie
  3. %Cpu0 : 0.0 us, 3.4 sy, 0.0 ni, 96.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  4. %Cpu1 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  5. %Cpu2 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  6. %Cpu3 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  7. %Cpu4 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  8. %Cpu5 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  9. %Cpu6 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  10. %Cpu7 : 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  11. MiB Mem : 9952.6 total, 5473.8 free, 2145.3 used, 2333.5 buff/cache
  12. MiB Swap: 0.0 total, 0.0 free, 0.0 used. 7477.7 avail Mem
  13. # 96.6 id -- 表示cpu的空闲率是96.6%

2. 内存

(1)查看内存的大小和使用量:

  1. root@ubuntu:~# free -h
  2. total used free shared buff/cache available
  3. Mem: 9.7Gi 2.1Gi 5.4Gi 49Mi 2.3Gi 7.3Gi
  4. Swap: 0B 0B 0B
  5. #选项:
  6. # -h 表示系统会根据值的大小来选择合适的单位,默认是byte
  7. # aotal 总计物理(swap)内存的大小
  8. # used 已使用物理内存(swap)的大小
  9. # free 可用的物理内存(swap)大小
  10. # shared 多个进程共享的内存总额
  11. # buff/cache 磁盘的缓存大小
  12. # available 可以被新应用程序使用的内存大小
  13. # Mem:物理内存的大小
  14. # Swap:交换分区的大小,交换分区就是使用磁盘的一部分空间来模拟内存,当物理内存占用满的时候就将一部分不常用的数据移动到交换分区中。交换分区是临时充当内存的作用,性能很低。

(2)查看系统使用内存最多的进程:

使用top命令然后按大写M就可以按照内存的使用率来进行排序,按e可以按M,G,T 这些单位来显示

  1. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  2. 1377 mysql 20 0 4.8g 0.8g 0.0g S 0.7 7.8 67:01.24 mysqld
  3. 977 root 20 0 7.7g 0.3g 0.0g S 0.0 3.4 32:34.83 java
  4. 3590 emqx 20 0 3.3g 0.2g 0.1g S 0.7 2.0 64:48.04 beam.smp
  5. 446 root 19 -1 0.3g 0.2g 0.2g S 0.0 2.0 1:59.99 systemd-journ

3. 磁盘IO

(1)查看对磁盘读写最多的进程

  1. oot@ubuntu1804:~# iostat -dkp
  2. Linux 4.15.0-156-generic (ubuntu1804) 12/03/2022 _x86_64_ (4 CPU)
  3. Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
  4. loop0 0.00 0.00 0.00 8 0
  5. sda 0.64 16.17 58.90 487458 1775844
  6. sda1 0.01 0.20 0.00 5893 96
  7. sda2 0.00 0.00 0.00 4 0
  8. sda5 0.00 0.11 0.00 3312 0
  9. sda6 0.63 15.79 58.90 476129 1775748
  10. scd0 0.00 0.07 0.00 2056 0
  11. # kB_read/s 每秒从磁盘读入的数据量,单位为K.
  12. # kB_wrtn/s 每秒向磁盘写入的数据量,单位为K.
  13. # kB_read 读入的数据总量,单位为K.
  14. # kB_wrtn 写入的数据总量,单位为K.
  15. # -d 仅显示磁盘统计信息
  16. # -k 以K为单位显示每秒的磁盘请求数,默认单位块.
  17. # -p device | ALL 用于显示块设备及系统分区的统计信息.

服务器很卡,查看CPU使用率不高,内存也够用,但就是卡,尤其是打开新程序或文件时,更卡。此时是哪出问题了?

一般是磁盘IO到达了瓶颈,还企业级ssd可以提高性能瓶颈。

(2)查看哪个进程使用磁盘读写最多

  1. root@ubuntu1804:~# iotop -o
  2. Total DISK READ : 5.79 M/s | Total DISK WRITE : 2.28 M/s
  3. Actual DISK READ: 5.79 M/s | Actual DISK WRITE: 4.64 M/s
  4. TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
  5. 17238 be/4 tom 5.79 M/s 0.00 B/s 0.00 % 64.19 % find /
  6. 17092 be/4 root 0.00 B/s 0.00 B/s 0.00 % 12.71 % [kworker/u256:0]
  7. 476 be/3 root 0.00 B/s 2.28 M/s 0.00 % 5.45 % [jbd2/sda6-8]
  8. # Total DISK READ:总的磁盘读取速度。 Total DISK WRITE:总的磁盘写入速度。
  9. # Actual DISK READ:实际磁盘读的速度 Actual DISK WRITE:实际磁盘写的速度
  10. # TID:进程pid值。
  11. # PRIO:优先级。
  12. # USER:用户。
  13. # DISKREAD:磁盘读取速度。
  14. # DISK WRITE:磁盘写入速度。
  15. # SWAPIN:从swap分区读取数据占用的百分比。
  16. # IO:I/O占用的百分比。
  17. # COMMAND:消耗I/O的进程名。
  18. #命令选项:
  19. # -o, -only 只显示在读写硬盘的程序
  20. # -d SEC, -delay=SEC  设定显示时间间隔。 刷新时间
  21. # 退出,按q或ctrl+C

4. 网络

(1)使用nload监控总体带宽使用情况

  1. tom@ubuntu1804:~$ nload -u h # -u:指定数据的单位 h表示写哦那个会根据数值的大小自动选择单位 例如M G等
  2. Device eth0 [10.0.0.18] (1/2):
  3. ==
  4. Incoming:#进来的网络流量
  5. Curr: 558.33 kBit/s #当前流量
  6. Avg: 297.12 kBit/s #平均流量
  7. Min: 1.39 kBit/s #最小流量
  8. Max: 894.77 kBit/s #最大流量
  9. Ttl: 58.23 MByte #流量总和
  10. Outgoing:#出去的网络流浪
  11. Curr: 16.16 kBit/s
  12. Avg: 15.37 kBit/s
  13. Min: 4.52 kBit/s
  14. Max: 32.62 kBit/s
  15. Ttl: 766.79 kByte

(2)使用nethogs找出使用带宽最多的进程

  1. tom@ubuntu1804:~$ sudo nethogs
  2. NetHogs version 0.8.5-2
  3. PID USER PROGRAM DEV SENT RECEIVED
  4. 1733 root wget eth0 13.352 4317.425 KB/sec
  5. 1605 tom sshd: tom@pts/0 eth0 1.025 0.07013.276 KB/sec
  6. 1732 root wget tom@pts/0 eth0 0.000 0.000 KB/sec
  7. ? root unknown TCP 0.000 0.000 KB/sec
  8. TOTAL 0.000 0.000 KB/sec 14.378 4317.701
  9. # PID:行程 ID。
  10. # USER:行程的拥有者。
  11. # PROGRAM:程序路径。
  12. # DEV:网络接口。
  13. # SENT:目前传送数据的速度。
  14. # RECEIVED:目前接收数据的速度
  15. #TOTAL 总计、总和
  16. #快捷键:
  17. # m:切换带宽单位,可用单位有 KB/s、KB、B、MB。
  18. # r:以数据接收速度排序。
  19. # s:以数据传送速度排序。
  20. # q:离开 NetHogs。

Linux 系统环境监测的更多相关文章

  1. 在Linux系统下运行微信Web开发者工具

    微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...

  2. Linux实战教学笔记06:Linux系统基础优化

    第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...

  3. Linux系统中的Device Mapper学习

    在linux系统中你使用一些命令时(例如nmon.iostat 如下截图所示),有可能会看到一些名字为dm-xx的设备,那么这些设备到底是什么设备呢,跟磁盘有什么关系呢?以前不了解的时候,我也很纳闷. ...

  4. 玩转 Linux 系统的方法论

    Linus 说“Just for fun”,而我要说“Just for 折腾”.想知道我是怎样折腾 Linux 的,请看下面这个截图: 从这个截图可以看出,我为了“折腾” Linux 系统,在我的电脑 ...

  5. Linux 系统中发博客必备的五大图片处理神器

    发博客时,总免不了要用图片说话.经过长时间的磨合,在 Linux 桌面系统下有几款图片处理软件我已经用得比较顺手了.这几款软件在 Linux 世界使用广泛,各个 Linux 发行版的软件仓库中都有自带 ...

  6. 探索 Linux 系统的启动过程

    引言 之所以想到写这些东西,那是因为我确实想让大家也和我一样,把 Linux 桌面系统打造成真真正正日常使用的工具,而不是安装之后试用几把再删掉.我是真的在日常生活和工作中都使用 Linux,比如在 ...

  7. 在linux系统中安装VSCode(Visual Studio Code)

    在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载压缩包(话说下载下来解压就直接可以运行了咧,都不需要make) 访问Visual Studio Code官网  ...

  8. 如何重置硬盘遭到“损坏”的Linux系统root用户密码

    传统印象下Linux是非常坚不可摧的,具有千年不更新,万年不重启的美名.而随着虚拟化的推进,很多跑在虚拟化上的Linux由于先前基础架构的脆弱,变得适应性“越来越不好”,体现在IP存储如果出现节点故障 ...

  9. Linux 系统中的MySQL数据库默认区分大小写

    今天在开发中遇到这么个问题,将连接的数据库改为服务器上的时候(服务器是Linux系统的),程序跑起来后一直出错,总提示数据库的表找不到, 而打开数据库看该表明明是存在的,在我的印象中MySQL数据是不 ...

  10. 如何配置Linux系统的网络IP地址

    一台安装了Linux系统的电脑如果想要联网,首先要做的就是进行网络配置.今天小编就以CentOS6.4系统为例为大家介绍整个网络配置的过程,虽然只是以CentOS6.4系统为例,但是其它的Linux系 ...

随机推荐

  1. 算法:Manacher,给定一个字符串str,返回str中最长回文子串的长度。

    [题目] 给定一个字符串str,返回str中最长回文子串的长度 [举例] str="123", 1 str="abc1234321ab" 7 [暴力破解] 从左 ...

  2. Zookeeper QuickStart

    环境版本 操作系统:CentOS release 6.6 (Final) java版本: jdk1.8 zookeeper版本: zookeeper-3.4.11 一. 安装jdk 此处省略 二. 安 ...

  3. Python——索引与切片

    #索引与切片 ##1.序列 序列:list,tuple,str 其中list是可变序列 typle,str是不可变序列 #修改序列的值 list = [3,4,5] tup = (3,4,5) str ...

  4. Node.js(六)连接MongoDB进行数据访问

    npm init -y(初始化项目) npm install mongodb --save(引入MongoDB) const { MongoClient } = require("mongo ...

  5. 锐捷网关交换机开启dhcp服务

    锐捷网关交换机作为dhcp server: Ruijie(config)#service dhcp        ------>该命令默认不启用,交换机必须配置 Ruijie(config)#i ...

  6. POJ1985 Cow Marathon (树的直径)

    用两次dfs求出树的直径,这两次dfs可以写在一起,当然为了方便理解,这里是分开写的. 1 //两次dfs求树的重心 2 #include<cstdio> 3 #include<cs ...

  7. Kafka 之producer拦截器(interceptor)

    Kafka 之producer拦截器(interceptor) 一.拦截器原理 Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制 ...

  8. 经典排序算法之-----选择排序(Java实现)

    其他的经典排序算法链接地址:https://blog.csdn.net/weixin_43304253/article/details/121209905 选择排序思想: 思路: 1.从整个数据中挑选 ...

  9. 鼠标悬浮上去显示小手CSS

    鼠标悬浮上去显示小手CSS只需要添加一句css代码即可 cursor:pointer;

  10. AIR32F103(三) Linux环境基于标准外设库的项目模板

    目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告 AIR32F103(二) Linux环境和LibOpenCM3项目模板 AIR32F103(三) Linux环境基于标准外 ...