Linux查看系统平均负载 负载高排查思路与命令

小强君_8972

小强君_8972

2026-04-09

814人浏览

原创

linux负载值(如2.45, 2.18, 1.92)表示过去1、5、15分钟处于可运行或不可中断睡眠(d状态)的平均进程数,反映系统资源排队压力,需结合cpu核心数判断是否过载。

linux查看系统平均负载 负载高排查思路与命令

Linux uptime 和 top 显示的三个负载值到底代表什么

这三个数字(如 load average: 2.45, 2.18, 1.92)不是 CPU 使用率,而是过去 1、5、15 分钟内处于可运行状态或不可中断睡眠状态(D 状态)的平均进程数。它反映的是系统“排队等资源”的压力程度。

关键判断基准是逻辑 CPU 核心数(nproc 或 lscpu | grep "^CPU(s)")。若 5 分钟负载长期 > 核心数 × 1.5,说明系统已明显承压;> 核心数 × 3 通常意味着严重排队,需立即排查。

  • uptime 最简快看,但无进程细节
  • top 实时刷新,默认按 CPU% 排序,按 Shift+L 可显示负载行,按 1 可展开各 CPU 核心使用率
  • 注意:负载高 ≠ CPU 高——I/O 等待(如磁盘卡顿)、大量 D 状态进程(如 NFS 挂载卡死)也会推高负载

用 ps 和 pidstat 找出吃掉负载的罪魁进程

单纯看 CPU% 容易误判。真正拖高负载的,往往是那些频繁创建子进程、卡在 I/O 或锁上、或陷入 D 状态的进程。

先筛 D 状态进程(最可疑):
ps aux | awk '$8 ~ /^D/ {print $0}'

再看哪些进程产生最多新线程/进程:
ps -eo pid,lwp,nlwp,%cpu,%mem,args --sort=-nlwp | head -10(nlwp 是线程数)

  • pidstat -w 1:每秒输出进程上下文切换(cswch/s)和任务创建(proc/s)次数,异常高的进程要重点查
  • pidstat -d 1:看 I/O 等待(%iowait)和读写速率,确认是否磁盘瓶颈
  • 注意:容器环境里,宿主机看到的 D 进程可能来自某个失控的容器,需结合 docker ps -q | xargs docker inspect --format='{{.Name}} {{.State.Status}}' 关联排查

iostat 和 iotop 确认是不是磁盘 I/O 拖垮了负载

当 top 中 %wa(I/O wait)持续 > 20%,或 pidstat -d 显示某进程 rkB/s 或 wkB/s 异常高,基本可锁定 I/O 问题。

用 iostat -x 1 关注关键指标:
%util > 90% 表示磁盘几乎满负荷;
await > 50ms(机械盘)或 > 10ms(SSD)说明响应延迟大;
avgqu-sz 长期 > 1 表示队列积压。

  • iotop -o 直接列出当前正在做 I/O 的进程和速率,比 ps 更直观
  • 注意:某些 RAID 卡或 NVMe 设备在 iostat 中可能显示为多个设备(如 nvme0n1p1, nvme0n1p2),需整体看 nvme0n1 汇总项
  • 临时缓解可用 ionice -c 3 -p <pid></pid> 降低进程 I/O 优先级,但治标不治本

排查中容易被忽略的底层因素

负载高却找不到明显耗资源进程?可能是以下隐蔽原因:

  • 内核模块或驱动 hang 住,导致大量进程卡在 D 状态(如旧版 qla2xxx 光纤卡驱动在链路抖动时会触发)
  • 内存严重不足引发频繁 swap,swapon --show + vmstat 1 看 si/so 列是否持续非零
  • 文件系统元数据锁争用(如 ext4 在大量小文件并发 create/unlink 时),cat /proc/fs/ext4/<device>/stats</device> 查 discard 或 lock 相关计数突增
  • 容器或虚拟机内核参数未调优,如 vm.swappiness=0 在 K8s 节点上反而加剧 OOM 压力,需结合 workload 类型评估

负载本身不报错,但它是系统失衡的第一个通用信号。盯住它背后的真实状态——是 CPU、内存、磁盘、网络,还是内核态的某种等待——才能真正止住恶化。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end='\n', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.27

2680

5

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

2026.02.03

249

24

sort排序函数用法
sort排序函数用法

sort排序函数的用法:1、对列表进行排序,默认情况下,sort函数按升序排序,因此最终输出的结果是按从小到大的顺序排列的;2、对元组进行排序,默认情况下,sort函数按元素的大小进行排序,因此最终输出的结果是按从小到大的顺序排列的;3、对字典进行排序,由于字典是无序的,因此排序后的结果仍然是原来的字典,使用一个lambda表达式作为key参数的值,用于指定排序的依据。

2023.09.04

1138

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1689

3

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.06.27

1211

7

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

2023.08.10

3958

6

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

705

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5179

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

6157

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习