当前位置:首页>Linux>面试官:Linux系统下,常见的卡死现象你怎么排查?

面试官:Linux系统下,常见的卡死现象你怎么排查?

  • 2026-10-11 08:40:20
面试官:Linux系统下,常见的卡死现象你怎么排查?
面试官好,遇到 Linux 系统卡死、卡顿、假死、完全无响应这类问题,我会从上层应用 → 系统资源 → 内核层 → 硬件层由浅入深逐层排查,核心先区分:是业务进程卡死、局部锁死,还是整个操作系统内核级死机。

一、先快速判断卡死范围(第一步)

  • 能否登录 SSH / 控制台、ping 是否通
  • 能 ping 通、但业务无响应:应用层 / 进程 / 死锁 / IO 阻塞问题
  • ping 不通、SSH 连不上、控制台无反应:内核挂死、内存崩溃、硬件故障
二、应用与进程层排查(最常见)
  1. 1.进程负载与僵死进程
  • 查看整体负载:top / htop,观察 CPU 100%、Load Average 过高
  • 查看僵尸进程:ps -ef | grep defunct,大量僵尸进程会耗尽进程表
  • 查看进程状态:D 状态(不可中断 IO 阻塞)、Z 僵尸、S 休眠异常进程
  1. 2.线程死锁 / 死循环
  • 多线程程序卡死优先排查:互斥锁顺序颠倒、递归锁滥用、条件变量等待不唤醒
  • 排查命令:pstack 进程ID、gstack 查看线程堆栈,定位卡死在哪个锁 / 函数
  • C/C++ 程序可结合 gdb attach 回溯调用栈,定位死锁位置
  1. 3.磁盘 IO 阻塞
  • 进程长期处于 D 状态,大概率磁盘、NFS 挂载、U 盘 / 外设 IO 卡死
  • 命令:iostat -x 1 查看磁盘使用率、% util 打满
  • 检查挂载点:mount 查看异常挂载、失联网络盘
三、系统资源瓶颈排查
    • 单进程死循环、业务逻辑异常抢占单核 100%
    • 中断、软中断过高:top 观察 si、hi 占用,外设驱动异常导致频繁中断
    • 文件句柄打满:ulimit -n 查看限制,lsof | wc -l 统计句柄数
    • 网络连接耗尽:ss -s / netstat -an,大量 TIME_WAIT、CLOSE_WAIT 导致端口耗尽
    • 进程数、线程数达到系统上限
    • 查看内存:free -h,确认内存耗尽、Swap 大量占用
    • 查看 OOM 日志:dmesg | grep -i oom,内核是否主动杀死进程
    • 排查大内存占用进程:sort -k4nr /proc/*/status,定位内存泄漏程序
    1. 3.CPU 资源耗尽
    1. 2.句柄 / 资源耗尽
    1. 1.内存溢出 / 内存泄漏
四、系统日志与内核层排查
  1. 1.系统日志分析
  • 系统日志:/var/log/messages、/var/log/syslog
  • 内核日志:dmesg、dmesg -w 实时查看报错
  • 重点关键字:error、failed、oom、BUG、soft lockup、watchdog
  1. 2.内核锁死与软死锁
  • 常见内核问题:soft lockup 软死锁、硬锁死、CPU 调度异常
  • 开启内核 panic、watchdog 监控,定位 CPU 核卡死问题
  • 内核模块 / 驱动异常:自研驱动、第三方内核模块 BUG 是嵌入式设备高发原因
  1. 3.文件系统异常
  • 磁盘坏道、文件系统损坏:dmesg 出现 ext4 error、IO error
  • 只读文件系统、日志分区满导致系统无法写入,业务卡死

五、网络层排查(网络设备 / 服务端场景)

  • 网卡丢包、网卡断流、驱动崩溃
  • 防火墙 /iptables 规则异常、连接数限制
  • 网关、路由异常导致业务阻塞等待网络响应

六、硬件层排查(完全死机必查)

  • 硬件资源:CPU 过热降频 / 保护停机、电源供电不稳定
  • 存储硬件:EMMC/SSD/ 机械硬盘坏块、老化
  • 外设冲突:USB、串口、外设驱动兼容问题
  • 嵌入式设备重点:DDR 内存不稳定、电压不稳导致内核随机崩溃

七、长期预防与定位手段(加分项)

  • 部署定时监控:CPU、内存、IO、句柄、线程数监控
  • 程序增加心跳保活、锁超时、异常捕获,避免单进程卡死整机
  • 内核开启 dump、core 文件生成,卡死现场保留回溯
  • 嵌入式产品:精简内核、裁剪无用驱动、稳定版本内核,减少内核 BUG
简单概括总结:

面试官你好,遇到 Linux 系统卡死,我会从上到下、由应用到内核再到硬件逐步排查。

第一,先判断卡死范围:能 ping 通、能登控制台,一般是应用层问题;完全连不上、终端无响应,就是内核或硬件级死机。

第二,排查应用与进程:先用 top 看 CPU、内存、负载是否打满,检查 D 态阻塞进程、僵尸进程;多线程程序重点排查死锁、死循环、IO 阻塞,可以用 gdb、pstack 打印线程栈定位卡点。

第三,检查系统资源:查看内存是否泄漏、是否触发 OOM 杀进程;检查磁盘 IO 占用、文件句柄、网络连接数是否耗尽,这类资源打满很容易造成系统卡顿卡死。

第四,分析内核日志:通过 dmesg、系统日志查看有没有软死锁、驱动报错、文件系统异常、内存损坏等内核报错,嵌入式场景很多卡死都是第三方驱动或内核模块 bug 导致。

最后排查硬件层面:检查 CPU 过热、供电不稳定、存储坏块、外设驱动冲突等硬件问题。

整体思路就是先定位是局部应用卡死还是整机内核卡死,逐层缩小范围,快速定位根因。

最新文章

随机文章