Linux系统环境监测
Linux系统环境主要监测CPU、内存、磁盘I/O和网络流量。
1. CPU
(1) 查看CPU的负载情况:uptime
可以通过uptime查看系统整体的负载情况。
如果服务器的CPU为1核心,则1分钟的系统平均负载 >=3 说明负载过高,如果服务器的CPU为4核心,则load average中的数字 >=12 负载过高。
root@ubuntu1804:~# uptime
09:57:53 up 7:17, 2 users, load average: 0.10, 0.03, 0.01
09:57:53 # 当前时间
up 7:17 # 主机已运行时间
2 users # 当前登录用户数
load average: 0.10, 0.03, 0.01 # 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值
(2)linux中查看cpu的逻辑数量:
ehigh@ubuntu:~$ grep -c 'processor' /proc/cpuinfo
8
CPU:central processing unit,中央处理器。
插槽:表示电脑上插了几个物理cpu
内核:表示这个物理cpu有几个核心,一个核心就是一个cpu
逻辑处理器:逻辑上的处理器数量,通过超线程技术将一个处理器模拟出两个处理器出来。
超线程技术:在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程
cpu发展历程:
刚开始一个物理cpu只有一个核心,通过提高核心的工作频率来提高性能,但是会产生过多的热量。
后面因特尔发明了超线程技术,在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程
后面采用多核架构,在一个物理cpu里面放多个核心,好似一辆汽车放多个发动机。
例如:服务器上面插了一个物理cpu是4核8线程。表示的是这个cpu又4个核心,支持超线程技术,逻辑cpu就是8个。
并发
(3)查看系统中使用CPU最多的进程:top
使用top命令,按下大写的P,可以按cpu使用率排序
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
720 root 20 0 473464 22060 19128 S 1.7 0.2 119:55.14 sunloginclient
3590 emqx 20 0 3483576 201492 74484 S 1.3 2.0 64:39.37 beam.smp
984 root 20 0 2754328 50696 5192 S 1.0 0.5 77:32.96 taosd
进程的cpu占用能否超过100%?
如果你的4核心的cpu,你可以运行400%
判断CPU当前忙不忙?
要结合cpu使用率和队列一起看,如果一分钟内cpu的队列数超过3并且cpu的使用率也很高,说明当前cpu很忙。
(4)查看cpu的使用率:
使用top命令,然后按数字1就可以显示每个cpu的详细信息
top - 10:48:44 up 5 days, 1:15, 1 user, load average: 0.10, 0.14, 0.10
Tasks: 398 total, 1 running, 397 sleeping, 0 stopped, 0 zombie
%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
%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
%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
%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
%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
%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
%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
%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
MiB Mem : 9952.6 total, 5473.8 free, 2145.3 used, 2333.5 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 7477.7 avail Mem
# 96.6 id -- 表示cpu的空闲率是96.6%
2. 内存
(1)查看内存的大小和使用量:
root@ubuntu:~# free -h
total used free shared buff/cache available
Mem: 9.7Gi 2.1Gi 5.4Gi 49Mi 2.3Gi 7.3Gi
Swap: 0B 0B 0B
#选项:
# -h 表示系统会根据值的大小来选择合适的单位,默认是byte
# aotal 总计物理(swap)内存的大小
# used 已使用物理内存(swap)的大小
# free 可用的物理内存(swap)大小
# shared 多个进程共享的内存总额
# buff/cache 磁盘的缓存大小
# available 可以被新应用程序使用的内存大小
# Mem:物理内存的大小
# Swap:交换分区的大小,交换分区就是使用磁盘的一部分空间来模拟内存,当物理内存占用满的时候就将一部分不常用的数据移动到交换分区中。交换分区是临时充当内存的作用,性能很低。
(2)查看系统使用内存最多的进程:
使用top命令然后按大写M就可以按照内存的使用率来进行排序,按e可以按M,G,T 这些单位来显示
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1377 mysql 20 0 4.8g 0.8g 0.0g S 0.7 7.8 67:01.24 mysqld
977 root 20 0 7.7g 0.3g 0.0g S 0.0 3.4 32:34.83 java
3590 emqx 20 0 3.3g 0.2g 0.1g S 0.7 2.0 64:48.04 beam.smp
446 root 19 -1 0.3g 0.2g 0.2g S 0.0 2.0 1:59.99 systemd-journ
3. 磁盘IO
(1)查看对磁盘读写最多的进程
oot@ubuntu1804:~# iostat -dkp
Linux 4.15.0-156-generic (ubuntu1804) 12/03/2022 _x86_64_ (4 CPU)
Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
loop0 0.00 0.00 0.00 8 0
sda 0.64 16.17 58.90 487458 1775844
sda1 0.01 0.20 0.00 5893 96
sda2 0.00 0.00 0.00 4 0
sda5 0.00 0.11 0.00 3312 0
sda6 0.63 15.79 58.90 476129 1775748
scd0 0.00 0.07 0.00 2056 0
# kB_read/s 每秒从磁盘