系列:《硬核运维进阶手册 · 从敲命令到掌控云原生战场》定位:面向运维 / 网管 / 安全新人,零基础也能抄作业预计阅读:6 分钟|建议收藏+转发,关键时刻能救你一命
凌晨 2:14,企业微信疯狂震动。
「生产环境接口响应 8 秒了!」「订单服务超时!」「快看是不是服务器挂了!」
你一个鲤鱼打挺坐起来,连上跳板机,习惯性地敲下 reboot --
停。
重启能掩盖问题,但解决不了问题。明天同一时间,它还会再来。更可怕的是,你永远不知道根因在哪。
今天这篇,给你运维老鸟压箱底的「Linux 排障三板斧」。不管你是刚入行的网管,还是被临时抓壮丁的开发,照着敲,5 分钟内定位 80% 的线上故障。
第一板斧:看「负载」——到底是谁在吃 CPU?
线上卡顿,第一反应不是看进程,而是看整体负载。
重点盯三个数(top 界面右上角):
load average: 4.52, 3.10, 1.88
这三个数分别代表过去 1 分钟 / 5 分钟 / 15 分钟的平均负载。
怎么判断正不正常?一条经验法则:
负载均值 ≈ CPU 核心数,算正常;超过核心数 2 倍,服务器在「喘」;超过 5 倍,基本半死。
查核心数:
nproc# 或者lscpu | grep "^CPU(s)"
实战判断:
- 负载高 + %CPU 接近 100% → 真有进程在猛吃 CPU(挖矿病毒?死循环?)
- 负载高 +
%CPU 不高,但 %wa(iowait)很高 → 不是 CPU 的锅,是磁盘在拖后腿(看第三板斧) - 负载高 + 进程都睡得香 → 大概率是内存不够在疯狂 swap(看第二板斧)
按 P 按 CPU 排序,瞬间揪出元凶进程。看到名字像 kdevtmpfsi、sysupdate 这种不认识的?恭喜,你可能中挖矿木马了,直接跳到本系列《防火墙攻防》篇。
第二板斧:看「内存」——OOM 杀手什么时候来敲门?
很多「卡死」不是 CPU 的问题,是内存被打满,系统在用交换分区(swap)苟延残喘,磁盘比内存慢一万倍,服务自然卡成 PPT。
重点看:
total used free shared buff/cache availableMem: 15Gi 12Gi 312Mi 200Mi 3.1Gi 2.1GiSwap: 2.0Gi 1.9Gi 0Mi# ← swap 快满了,危险!
关键认知:Linux 会「借」内存做磁盘缓存(buff/cache),这部分随时能还,所以别被used吓到,看available(真正可用内存)才准。
真正的红色警报是Swap 被吃满。一旦物理内存 + swap 全光,内核的 OOM Killer 会杀掉它认为「最该死」的进程——往往就是你的核心服务。
查谁在吃内存:
翻系统日志确认是不是被 OOM 干过:
dmesg -T | grep -i "oom\|killed"# 或grep -i "out of memory" /var/log/messages
看到 Out of memory: Killed process xxx (java)?那就是它了。
第三板斧:看「磁盘」——IO 瓶颈最隐蔽也最致命
CPU、内存都正常,服务还是慢?八成是磁盘 IO 瓶颈,而且它最隐蔽,top 里根本看不出。
先看磁盘满了没(最常见也最坑):
df -h# 重点看 Use% 那列,100% 的直接定位
日志打爆磁盘、core 文件堆积,是新手最常踩的坑。顺手查谁占空间:
du -sh /var/log/* 2>/dev/null | sort -rh | head
再看 IO 是不是瓶颈(数据库/ES 慢的元凶):
盯 util%(设备利用率)和 await(IO 等待毫秒):
- await 远高于 svctm → 队列在排队,IO 已经跟不上
组合拳:一条命令把「案发瞬间」钉死
三板斧分开看还行,但老鸟真正用的是组合拳——把异常时点的全貌一次性抓下来,留档给事后复盘:
# 一键快照:负载 + 内存 + 磁盘 + 占用最高的进程echo "=== $(date) ===" >> /tmp/trouble_$(date +%F).logtop -bn1 | head -20 >> /tmp/trouble_$(date +%F).logfree -h >> /tmp/trouble_$(date +%F).logdf -h >> /tmp/trouble_$(date +%F).log
把它写成定时任务,每 5 分钟拍一张「体检照」,故障来了翻日志就能看到是哪一刻、哪个指标先崩的——这才是排障的降维打击。
进阶:三板斧之外的「放大镜」
卡顿定位到「某个进程」,但不知道它在干嘛?上放大镜:
# 跟踪进程在调什么系统调用(卡住/死循环神器)strace -p -f -e trace=network,read,write# 看网络连接(是不是连了奇怪的境外 IP?)ss -antup | grep # 看内核有没有报错(硬件/驱动层)dmesg -T | tail -50
老鸟私房排查清单(建议截图保存)
写在最后
排障的本质不是「重启试试」,而是用数据说话:先整体(负载/内存/磁盘),再局部(进程/连接/系统调用),最后留痕(快照日志)。
这三板斧你今天就能用上。但 server 只是起点——当你的服务跑在成百上千个容器里,单个 top 就不够看了。下一篇,我们钻进K8s 集群,拆解一个 Pod 从你敲下 kubectl apply 到变成 Running,中间到底过了哪 13 道关。
关注云巅智维,回复「排障」领完整命令速查卡。下期见。
本文是《硬核运维进阶手册》第 1 篇。系列路线:Linux 排障 → K8s 集群拆解 → 防火墙攻防 → 云原生安全纵深防御。留言说说你踩过最坑的线上故障,抽 3 位送运维资料包。