0

0

Linux高负载如何排查_高频场景实战指导更易上手【教程】

冷漠man

冷漠man

发布时间:2025-12-24 22:56:02

|

566人浏览过

|

来源于php中文网

原创

Linux高负载时应先看load average、CPU使用率、IO等待时间三指标;load average表示运行态或不可中断睡眠态进程平均数,非CPU百分比;load高而CPU低且iowait%>20%表明IO瓶颈;内存不足会引发swap和page cache回收,导致高load与sy%飙升。

linux高负载如何排查_高频场景实战指导更易上手【教程】

Linux高负载时,第一反应不是重启服务,而是快速定位“谁在吃CPU、内存或IO”。关键看三个指标:load average(系统平均负载)、CPU使用率IO等待时间。三者不一致时,往往能直接锁定问题类型。

看懂 load average 的真实含义

执行 uptimetop,看到类似 load average: 12.45, 11.88, 10.23 —— 这不是CPU使用率百分比,而是**过去1/5/15分钟内,处于运行态或不可中断睡眠态(如磁盘IO)的平均进程数**。重点对比:如果 CPU 核心数是 8,load 长期 > 8,说明有进程排队;若 load 高但 CPU 使用率很低(

  • ps aux | awk '$8 ~ /D/ {print}' 快速找 D 状态进程
  • cat /proc/loadavg 查看更细粒度:第4字段是当前运行队列长度,第5字段是总进程数

揪出 CPU 消耗大户

top 默认按 CPU 排序,但容易漏掉短时爆发型进程。建议组合使用:

  • top -Hp [PID] 查看某进程的各线程占用(尤其 Java 应用常见单线程打满)
  • pidstat -u 1 3 每秒采样3次,精准捕捉波动峰值
  • 对 Java 进程,用 jstack [PID] > jstack.log 结合 top -Hp 找到高 CPU 线程 ID,转为十六进制后在 jstack 日志里搜 nid=0x... 定位具体方法

识别隐形 IO 卡顿元凶

当 load 高、CPU 低、iowait%top 第三行右数第二项)持续 >20%,说明磁盘慢或进程卡在 IO。别只盯 iotop——它显示的是“当前正在读写”的进程,而真正拖慢系统的可能是大量 同步写等待(比如日志刷盘、数据库 fsync)。

  • iostat -x 1 关注 %util(设备忙时百分比)和 await(IO 平均响应时间,>10ms 要警惕,>50ms 通常已严重)
  • /proc/[PID]/io 看某进程累计读写字节数和 syscalls 次数,判断是否频繁小 IO
  • 检查磁盘健康:smartctl -a /dev/sda,关注 Reallocated_Sector_Ct、Pending_Sector 等字段

内存不足引发的连锁假象

内存吃紧时,系统会频繁 swap 和回收 page cache,导致大量 IO 和上下文切换,表现常为 load 高 + CPU sy%(系统态)飙升 + kswapd0 进程活跃。此时 free -h 可能显示 “available” 不足,但 buff/cache 很高——别急着 kill 进程,先看是否被 page cache 占用(可安全释放)。

  • echo 1 > /proc/sys/vm/drop_caches(仅临时测试,生产慎用)验证 cache 是否真成瓶颈
  • slabtop 查看内核 slab 分配,dmesg -T | grep -i "out of memory" 确认是否 OOM Killer 已介入
  • 对容器环境,检查 cgroups 内存限制:cat /sys/fs/cgroup/memory/.../memory.usage_in_bytes

基本上就这些。高负载排查不是拼命令数量,而是建立“load → CPU/IO/MEM → 进程/线程/内核态”的归因链条。每次动手前,先花30秒看全 top 屏幕,比盲目杀进程有效得多。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

357

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

558

2023.08.10

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

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

462

2023.08.10

数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

324

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2066

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

346

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

250

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

315

2023.10.09

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

10

2025.12.24

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 5.9万人学习

Git 教程
Git 教程

共21课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号