0

0

Linux 高负载排查与优化策略

舞姬之光

舞姬之光

发布时间:2026-02-24 14:25:02

|

572人浏览过

|

来源于php中文网

原创

是正常的,尤其在多核cpu上;top默认显示所有核心累计占用率,4核满载可达400%;应关注线程级cpu时间消耗及load average与核心数的比值,而非单纯百分比。

linux 高负载排查与优化策略

top 里 %CPU 超过 100% 是正常的吗?

是正常的,尤其在多核 CPU 上。top 默认显示的是“所有 CPU 核心累计占用率”,所以 4 核机器满载时能看到 %CPU 达到 400%。别一看到 237% 就以为进程疯了。

真正该盯的是单个线程(top -H)或进程的绝对 CPU 时间消耗,而不是百分比本身。

  • top -H -p <pid></pid> 查看某进程下的线程级 CPU 占用,确认是不是某个线程死循环
  • ps -o pid,ppid,thcount,%cpu,comm -p <pid></pid> 看线程数和平均 CPU,快速判断是否线程爆炸
  • 注意 top 右上角的 “Cpu(s)” 行:如果 us(用户态)长期 >70%,说明应用代码或调用库有问题;sy(内核态)高,可能是频繁系统调用、锁竞争或 I/O 等待

load average 三个数字怎么看?

它们不是 CPU 使用率,而是“平均等待队列长度”:1 分钟、5 分钟、15 分钟内,处于 运行态或不可中断睡眠态(D 状态) 的进程平均数量。

关键不是数字大小,而是和 CPU 核心数对比。比如 8 核机器,load average: 9.23 7.65 5.41 意味着过去 1 分钟平均有 1 个进程在排队等 CPU,不算异常;但若持续 >16,就说明系统开始明显争抢资源。

  • uptimecat /proc/loadavg 都能查,后者还附带当前运行进程数和最近使用的 PID
  • 如果 load 高但 %CPU 很低,大概率是大量进程卡在 D 状态(如磁盘 I/O 卡住),用 ps aux --sort=-pcpu | head -10 看不到罪魁祸首,得看 ps aux --sort=-stateD 状态进程
  • 某些 NVMe 或 multipath 设备故障时,会拖住几十个进程在 D 状态,此时 iostat -x 1%util 可能没爆,但 awaitr_await 会飙升到几百毫秒以上

perf record 跑出来一堆 [unknown] 怎么办?

这是符号缺失导致的——perf 抓到了指令地址,但找不到对应函数名。常见于没装 debuginfo 包、程序是 strip 过的、或者用了 JIT(如 Java/Node.js)。

Play.ht
Play.ht

根据文本生成多种逼真的语音

下载

不解决就只能靠地址猜,基本没法定位热点。

  • CentOS/RHEL:装 kernel-debuginfo 和对应版本的 *-debuginfo 包(比如 glibc-debuginfo),路径要和 /usr/lib/debug 对齐
  • Ubuntu/Debian:开 deb-src 源,装 linux-image-$(uname -r)-dbgsymlib<name>-dbg</name> 类包
  • 自己编译的程序:加 -g,别用 strip;Go 程序记得关 -ldflags="-s -w";Node.js 用 --interpreted-frames-native-stack 参数启动才能看到 JS 函数栈

为什么 iowait 高但磁盘 util 却很低?

因为 iowait 是 CPU 在等 I/O 完成时的空闲时间统计,而 %util 是设备忙的时间占比。两者统计维度不同——前者是 CPU 视角,后者是设备驱动视角。

典型场景:大量小 IO、随机读写、IO 调度器阻塞、或存储层(如 ceph、nfs、overlayfs)引入延迟,都会让 CPU 等很久,但块设备本身可能刚发完请求就返回了,%util 看不出压力。

  • iostat -x 1 重点看 avgqu-sz(平均队列深度)和 await(单次 IO 平均耗时):如果 avgqu-sz > 1await > 10ms(SSD)或 >20ms(HDD),说明 IO 路径有瓶颈
  • iotop -o 找真正发 IO 的进程;pidstat -d 1 看每个进程的读写 BPS 和 IO 等待时间
  • 如果是容器环境,cat /sys/fs/cgroup/blkio/.../blkio.io_service_bytes 可以确认是不是某个容器把 IO 带宽占满了,即使宿主机 iostat 看着不高

高负载排查最易被忽略的点:别只盯着 CPU 和磁盘,/proc/interrupts 里软中断(NET_RXIRQ_TIME_ACCOUNTING)持续飙高,可能意味着网卡收包压垮了单个 CPU 核,这时候调 irqbalance 或手动绑核才管用。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
sort排序函数用法
sort排序函数用法

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

404

2023.09.04

堆和栈的区别
堆和栈的区别

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

422

2023.07.18

堆和栈区别
堆和栈区别

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

595

2023.08.10

堆和栈的区别
堆和栈的区别

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

422

2023.07.18

堆和栈区别
堆和栈区别

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

595

2023.08.10

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

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

719

2023.08.10

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

524

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

474

2023.07.28

Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

1

2026.02.24

热门下载

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

精品课程

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

共48课时 | 9.6万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

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

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