1.CPU 使用率达到 100%,如何定位问题?
2.CPU Load 很高但 CPU 使用率正常,可能是什么原因?
3.CPU、内存都不高,但 Load 很高,是什么原因?
4.32 核 CPU,利用率达到多少算饱和?Load 达到多少算饱和?
5.Load 高用什么工具排查?从哪些方面排查?
6.内存持续增长如何排查?
7.磁盘空间足够但出现 OOM,怎么排查?
8.NTP 时间同步了解吗?时间不同步会带来哪些业务问题?
CPU 100%、Load 高、内存暴涨,一页纸排查套路
性能排查是面试必考,而且一定追问「下一步做什么」。记住一套固定顺序:先看整体趋势,再定位进程,最后定位到线程/代码。下面每题都按这个思路给你能直接说出口的答法。
1、CPU 使用率达到 100%,如何定位问题?
回答:先 top 看是哪个进程吃 CPU,按 P 键排序;再用 ps aux --sort=-%cpu 确认 PID。如果是 Java 应用,用 top -Hp PID 找到最耗 CPU 的线程,把线程号转成 16 进制,再用 jstack 导出线程栈,就能定位到具体的代码位置。如果是脚本,直接看进程和它调用的命令。定位到进程后再判断是业务问题还是配置问题,别一上来就 kill,先确认是不是关键业务。
2、CPU Load 很高但 CPU 使用率正常,可能是什么原因?
回答:最常见的原因是 IO 等待:进程在等磁盘或网络,CPU 空着但 Load 高。还有大量 D 状态(不可中断睡眠)的进程,比如 NFS 卡住、磁盘故障。排查命令:top 看有没有 D 状态进程,iostat -x 1 看磁盘 %util 和 await,vmstat 1 看 wa 列,确认是不是 IO 瓶颈。一句话总结:Load 高不一定 CPU 忙,先分清是 CPU 密集还是 IO 密集。
3、CPU、内存都不高,但 Load 很高,是什么原因?
回答:和上一题是同一类问题,Load 统计的是运行队列加不可中断睡眠,不只算 CPU。重点看 IO 等待、锁竞争、线程大量阻塞。用 uptime 看 1、5、15 分钟的趋势,用 vmstat 1 看 r 和 b 两列:r 高说明 CPU 不够,b 高说明 IO 阻塞。先分清是哪种,再决定加 CPU、优化代码还是处理磁盘。
4、32 核 CPU,利用率多少算饱和?Load 多少算饱和?
回答:CPU 利用率到 70%-80% 就要开始关注,90% 以上基本算接近饱和。Load 的参考值是核数:32 核的机器 Load 到 32 左右算满,但更合理的口径是看 Load 除以核数,大于 0.7 开始关注,大于 1 就是过载。注意 Load 一定要配合 CPU 使用率一起看,不能单看一个数下结论。
5、Load 高用什么工具排查?从哪些方面排查?
回答:四步走:一、uptime 看趋势;二、top 看 CPU、内存、进程,先分清是 CPU 还是 IO 问题;三、vmstat 1 看 r、b、wa;四、iostat -x 看磁盘。定位到具体进程后再往下挖线程。排查方向主要是四类:CPU 密集、IO 密集、内存不足触发 swap、还有锁和网络问题。
6、内存持续增长如何排查?
回答:先用 free -h 看整体,注意 buff/cache 是缓存、可以回收,重点看 used 和 swap;再用 top 按内存排序、ps aux --sort=-%mem 确认是哪个进程。持续增长一般怀疑内存泄漏,观察进程 RSS 是不是只涨不降;Java 应用用 jstat 看堆和 GC 情况,必要时 dump 堆分析。最后别忘了看容器或 K8s 的 limit,还有 dmesg | grep -i oom 里的系统 OOM 记录。
7、磁盘空间足够但出现 OOM,怎么排查?
回答:OOM 不一定是物理内存真不够,要分几层查:一、dmesg | grep -i oom 看系统杀了谁;二、free -h 看物理内存和 swap;三、容器/K8s 环境先看 Pod 的 limit,limit 设小了照样 OOMKilled;四、Java 程序看 Xmx 堆配置是不是超过容器内存。定位到是物理内存不足还是 limit 限制,再决定加内存还是调参数。
8、NTP 时间同步了解吗?时间不同步会带来哪些业务问题?
回答:了解,我用 chrony 做时间同步,重点是配置好 NTP 服务器和 makestep 跳变策略,偏差大了要能自动跳变。时间不同步的典型问题:一是 K8s 证书校验失败,证书显示未生效或已过期,服务之间互相拒绝,比如 metrics-server 采不到新节点的数据;二是日志和监控时间对不上,排障对不上号;三是分布式数据库和消息队列的时序错乱。所以集群所有节点必须统一 NTP。
—— 明天预告:运维面试第 3 天:磁盘满、IO 高、RAID 和 inode,一次讲透