温馨提示×

怎样排查debian进程异常

小樊
57
2026-10-01 16:22:24
栏目: 智能运维

在 Debian 系统上排查“进程异常”(进程卡死、CPU 占用高、内存泄漏、频繁重启、假死等),通常可以按下面这套思路逐步定位。


一、先确认“异常”的表现

明确现象,有助于选择工具:

  • CPU 飙高?
  • 内存不断增长?
  • 进程无响应(hang)?
  • 进程频繁退出/重启?
  • 磁盘 IO 高?
  • 网络异常?

二、查看系统整体状态

1. 系统资源概览

top
# 或
htop

重点看:

  • %CPU
  • %MEM
  • LOAD AVERAGE
  • STATE(R / S / D)

若是 D 状态(不可中断睡眠),通常是 IO 或磁盘问题。

2. 内存与交换

free -h

关注:

  • available
  • swap 是否被大量使用

3. 磁盘 IO

iostat -x 1

或

iotop

若 %util 接近 100%,进程很可能在等磁盘。


三、定位异常进程

1. 按 CPU / 内存排序

ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%mem | head

2. 查看进程状态

ps -o pid,stat,etime,cmd -p <PID>

常见状态:

  • R:运行中
  • S:睡眠
  • D:不可中断(IO)
  • Z:僵尸进程

四、深入分析单个进程

1. 查看进程在做什么(系统调用)

strace -p <PID>
  • 若一直卡在某个 read/write/futex → 可判断阻塞点
  • 若无输出且 CPU 高 → 可能是计算密集或死循环

2. 查看打开的文件 / 网络连接

lsof -p <PID>
ss -antp | grep <PID>

3. 查看线程情况

top -H -p <PID>

或

ps -T -p <PID>

4. 内存分析(泄漏)

pmap -x <PID>

或

cat /proc/<PID>/status

关注:

  • VmRSS
  • VmSize

五、日志与异常来源

1. 系统日志

journalctl -xe
dmesg | tail

关注:

  • OOM(Out Of Memory)
  • 段错误(segfault)
  • 磁盘错误

2. 服务日志

systemctl status <service>
journalctl -u <service>

3. 应用自身日志

通常在:

  • /var/log/
  • 应用配置指定的 log 路径

六、进程崩溃 / 重启类问题

1. 是否被 OOM 杀掉

dmesg | grep -i "killed process"

2. systemd 重启行为

systemctl show <service> | grep Restart

3. 核心转储(core dump)

ulimit -c
coredumpctl list

七、高级排查手段(必要时)

  • perf(CPU 热点)
perf top -p <PID>
  • gdb(死锁、崩溃)
gdb -p <PID>
bt
  • netstat / ss(网络挂起)

八、常见异常速查表

现象 可能原因
CPU 高 死循环、计算密集
内存涨 内存泄漏
D 状态 磁盘/网络 IO
Z 状态 父进程未回收
频繁重启 OOM / 配置错误
无响应 死锁 / 外部依赖

如果你能给出 具体异常现象或进程名,我可以直接给你更针对性的排查命令。

0 踩