Ubuntu 服务器稳定性问题排查指南

Ubuntu 服务器稳定性问题排查指南

服务器“稳定性问题”通常表现为以下几种现象(严重程度递增):

  • 服务间歇性卡顿 / 响应延迟突然升高
  • 进程 hang / zombie 进程积累
  • 系统 load 异常高但 CPU/IO 未饱和
  • 随机 freeze(键盘鼠标无响应,但部分网络仍通)
  • 软重启(OOPS / BUG_ON)或硬 panic(kernel panic)
  • 完全死机(需断电重启)

这些问题在 Ubuntu 24.04 LTS(内核 6.8 系列)及后续点版本中仍偶有报告,尤其在特定硬件(Realtek 网卡、某些 AMD/Intel GPU、NVMe 控制器)和高负载场景下。

1. 先明确问题类型(最关键一步)

表现形式最可能根因类别优先检查命令/日志典型占比(经验值)
服务响应变慢 / 间歇卡顿资源竞争 / 内存压力 / IO 等待top/htop/btop、vmstat 1 5、iostat -x 1 545–55%
系统完全 freeze(无响应)内核 bug / 驱动 deadlock / GPU hang / 硬件journalctl -b -1 -p err、dmesg | grep -iE “oopsbug
随机 kernel panic / oops驱动冲突 / 内存错误 / 内核 bugjournalctl -k -b -1、/var/crash/、dmesg10–20%
开机后一段时间崩溃模块加载顺序 / initramfs 问题 / phased updatessystemd-analyze blame、journalctl -b 05–10%
高负载后掉线 / 服务挂起网络驱动 buffer 溢出 / conntrack 满dmesg | grep -i eth、ss -m、nstat -az5–15%

2. 核心排查步骤(推荐顺序)

步骤 1:收集崩溃现场证据(最重要!)

在系统还能 SSH 进去时立即运行:

  • journalctl -b -1 -p err -n 500(上一次启动的错误日志)
  • dmesg | grep -iE “error|oops|bug|panic|hung|freeze|fault|segfault|killed|oom”
  • journalctl -k(纯内核日志)
  • last reboot 或 uptime(崩溃前运行时长)
  • free -h && vmstat 1 5 && iostat -xmdz 1 5(资源快照)
  • ls -l /var/crash/(是否有 kernel crash dump)

如果系统已死机,重启后第一时间看 -b -1(上一次启动)。

步骤 2:判断是否内核级崩溃

  • 有 “Kernel oops” / “BUG: unable to handle kernel NULL pointer” / “general protection fault” → 驱动或内核 bug
  • 有 “Out of memory: Killed process” → OOM killer 触发(内存耗尽)
  • 有 “watchdog: BUG: soft lockup” → 内核死锁或 CPU 卡住
  • 有 “split lock” 或 “#PF” → 特定 CPU 微码 / 内核配置问题

步骤 3:硬件 vs 软件快速区分

倾向硬件问题倾向软件/配置问题
随机、无明显负载触发只在特定服务/负载下出现
换内核(HWE / mainline)改善换内核无变化或更差
memtest86+ / stress-ng –cpu 报错memtest 通过
特定硬件型号反复出现(Realtek r8125、某些 NVMe)虚拟机/不同硬件也出现

步骤 4:常见高频根因与对应定位方式

  1. 内存耗尽 + OOM killer 表现:进程被随机杀(journal 有 “Out of memory: Killed process”) 检查:grep -i oom /var/log/syslog*、cat /proc/meminfo、free -h -w 常见场景:Docker 无限制容器、Java 应用未设 -Xmx、大型数据库缓冲
  2. Realtek 网卡驱动问题(r8125 / r8169) 表现:高流量后网卡 buffer 耗尽 → 系统 freeze / panic 检查:dmesg | grep -i r81、ethtool -S ethX(看 tx/rx errors) 解法:blacklist r8169 + 安装官方 r8125-dkms 或 HWE 内核
  3. GPU / Mesa / AMDGPU / i915 hang(常见于带独显服务器) 表现:图形操作或 GPU 负载后 freeze(即使是无头服务器) 检查:journalctl -b -1 | grep -iE “amdgpu|i915|drm|gpu” 常见:Mesa 版本与内核不匹配 → 尝试 linux-generic-hwe 或回滚 Mesa
  4. 文件系统错误导致只读模式 表现:突然所有写操作失败,dmesg 有 “remounted read-only” 检查:dmesg | grep -i “I/O error|read-only”、fsck 日志 解法:强制 fsck(救援模式)、检查 SMART(smartctl -a /dev/nvme0)
  5. phased updates / SRU 延迟关键修复 表现:升级后新问题出现,但 apt policy 显示有更高版本未装 检查:apt policy linux-image-$(uname -r)、apt list –upgradable 强制:apt -o APT::Get::Always-Include-Phased-Updates=true upgrade
  6. systemd-networkd-wait-online 超时(开机慢或启动 hang) 表现:开机卡 90–120s 在网络等待 检查:systemd-analyze blame | grep wait-online 临时解法:systemctl disable systemd-networkd-wait-online.service

3. 生产环境预防与长期稳定性建议

  • 内核策略:优先使用 HWE 内核(linux-generic-hwe-24.04),bug 修复更快
  • 监控先行:Netdata(实时 + 历史) + Prometheus Alertmanager(OOM、soft lockup、disk read-only 等告警)
  • 自动重启策略:启用 kdump + kexec(panic 时自动捕获 vmcore)
  • 定期压力测试:stress-ng –cpu 0 –io 4 –vm 2 –timeout 3600(模拟负载)
  • 硬件诊断:memtest86+(内存)、smartctl -t long(磁盘)、prime95/mprime(CPU)
  • 最小化变更:生产环境禁用 unattended-upgrades 的非 security 升级,或手动审核

稳定性问题 80% 以上都能通过 journalctl -b -1 + dmesg + 资源快照 在 10–30 分钟内定位初步方向。

Telegram