云服务器 ECS Linux 系统负载查询及分析说明
一、服务器出现死机或者卡顿现象分析
云服务器 ECS Linux 系统出现死机或卡顿时,可以通过如下步骤进行整体排查:
- 检查服务器进程与服务否占用了过多内存,或者内存没有正常释放,导致出现内存溢出,系统宕机。
- 检查 /var/spool/cron 等系统配置中是否有 cron(计划任务、自动任务)在对应时间段内执行。
- 检查 Web 服务器的参数是否超过了服务器的性能。比如最大连接数过高等。
- 检查进程数是否非常高,导致服务瘫痪,机器假死。
- 查看系统日志中是否有异常记录。
- 检查磁盘是否有坏块。
- 内核消耗过大,查看是否有瞬间资源占用过大的进程或服务。
- 查看是否有异常进程,是否存在被攻击或入侵症状。
二、使用 sar 查看 Linux 系统各项资源使用情况
sar 是System Activity Reporter(系统活动情况报告)的缩写。sar 工具对系统状态进行取样后,通过计算数据和比例来表达系统当前的运行状态。其特点是可以连续对系统取样,获得大量的取样数据。其取样数据和分析结果可以存入文件,所需的负载很小。
sar 是 Linux 系统中较为全面的性能分析工具,可以从多个方面对系统的活动进行监控和报告,包括文件读写情况、系统调用使用情况、串口、CPU 效率、内存使用情况、进程活动及 IPC 有关的活动情况等等。
1. Linux系统默认是没有这个命令的,需要自己安装。
[root@hecs-293015 ~]# yum install sysstat ##安装 Loaded plugins: fastestmirror Determining fastest mirrors base | 3.6 kB 00:00:00 epel | 4.7 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 (1/4): epel/x86_64/group_gz | 99 kB 00:00:00 (2/4): epel/x86_64/updateinfo | 1.0 MB 00:00:00 (3/4): epel/x86_64/primary_db | 7.0 MB 00:00:00 (4/4): updates/7/x86_64/primary_db | 20 MB 00:00:00 Resolving Dependencies --> Running transaction check ........ [root@hecs-293015 ~]# systemctl enable --now sysstat ##开机自启
2. 查看 CPU 负载
[root@hecs-293015 ~]# sar -u 1 5 ##每间隔1秒统计一次CPU的使用情况,总共统计5次
Linux 3.10.0-1160.53.1.el7.x86_64 (hecs-293015) 03/29/2023 _x86_64_ (2 CPU)
05:01:55 PM CPU %user %nice %system %iowait %steal %idle
05:01:56 PM all 0.00 0.00 0.00 0.00 0.00 100.00
05:01:57 PM all 6.47 0.00 1.00 0.00 0.00 92.54
05:01:58 PM all 0.00 0.00 0.00 0.00 0.00 100.00
05:01:59 PM all 0.50 0.00 0.00 0.00 0.00 99.50
05:02:00 PM all 0.00 0.00 0.50 0.00 0.00 99.50
Average: all 1.40 0.00 0.30 0.00 0.00 98.30
显示说明:
%user:用户消耗的 CPU 时间的比例。
%nice:通过 nice 改变了进程调度优先级的进程
%system:系统模式下消耗的 CPU 时间的比例。
%iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例。
%steal:虚拟机的虚拟 CPU 计算占用的时间比例。
%idle:CPU 空闲时间比例。
3. 查看平均负载
[root@hecs-293015 ~]# sar -q 1 5 ##每间隔1秒统计一次系统负载,总共统计5次
Linux 3.10.0-1160.53.1.el7.x86_64 (hecs-293015) 03/29/2023 _x86_64_ (2 CPU)
05:31:51 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
05:31:52 PM 0 196 0.02 0.04 0.05 0
05:31:53 PM 0 196 0.02 0.04 0.05 0
05:31:54 PM 0 196 0.02 0.04 0.05 0
05:31:55 PM 0 196 0.02 0.04 0.05 0
05:31:56 PM 0 196 0.02 0.04 0.05 0
Average: 0 196 0.02 0.04 0.05 0
显示说明:
runq-sz:运行队列的长度(等待运行的进程数)。
plist-sz:进程列表中进程(processes)和线程(threads)的数量。
ldavg-1:最后 1 分钟的系统平均负载。
ldavg-5:过去 5 分钟的系统平均负载。
ldavg-15:过去 15 分钟的系统平均负载。
4. 查看内存负载
[root@hecs-293015 ~]# sar -r 1 3 ##每间隔1秒统计一次系统负载,总共统计3次
Linux 3.10.0-1160.53.1.el7.x86_64 (hecs-293015) 03/29/2023 _x86_64_ (2 CPU)
05:40:11 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
05:40:12 PM 1830148 2049644 52.83 218592 931480 1677808 43.24 1203096 494708 140
05:40:13 PM 1830148 2049644 52.83 218592 931480 1677808 43.24 1203104 494712 140
05:40:14 PM 1830148 2049644 52.83 218592 931480 1677808 43.24 1203108 494708 140
Average: 1830148 2049644 52.83 218592 931480 1677808 43.24 1203103 494709 140
显示说明:
kbmemfree:该值和 free 命令中的 free 值基本一致,它不包括 buffer 和 cache 空间(空闲中的物理内存大小)
kbmemused:该值和 free 命令中的 used 值基本一致,它包括 buffer 和 cache 空间(使用中的物理内存大小)
%memused:物理内存使用率,该值是 kbmemused 和内存总量(不包括 swap)的百分比。
kbbuffers 和 kbcached:这两个值和free 命令中的 buffer 和 cache 一致。
kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)。
%commit:该值是 kbcommit 与内存总量(包括swap)的百分比。
5. 查看页面交换发生状况
[root@hecs-293015 ~]# sar -w 1 3 Linux 3.10.0-1160.53.1.el7.x86_64 (hecs-293015) 03/29/2023 _x86_64_ (2 CPU) 05:47:11 PM proc/s cswch/s 05:47:12 PM 3.00 271.00 05:47:13 PM 1.00 241.00 05:47:14 PM 1.00 216.00 Average: 1.67 242.67
显示说明:
pswpin/s:每秒系统换入的交换页面(swap page)数量。
pswpout/s:每秒系统换出的交换页面(swap page)数量。
6. 其他常用参数
-
-A 汇总所有的报告
-
-a 报告文件读写使用情况
-
-B 报告附加的缓存的使用情况
-
-b 报告缓存的使用情况
-
-c 报告系统调用的使用情况
-
-d 报告磁盘的使用情况
-
-g 报告串口的使用情况
-
-h 报告关于buffer使用的统计数据
-
-m 报告IPC消息队列和信号量的使用情况
-
-n 报告命名cache的使用情况
-
-p 报告调页活动的使用情况
-
-q 报告运行队列和交换队列的平均长度
-
-R 报告进程的活动情况
-
-r 报告没有使用的内存页面和硬盘块
-
-u 报告CPU的利用率
-
-v 报告进程、i节点、文件和锁表状态
-
-w 报告系统交换活动状况
-
-y 报告TTY设备活动状况