首页/AI/大模型部署与运维速查/服务挂起:抓栈找卡点
运维监控与排障50 条

服务挂起:抓栈找卡点

服务进程还在但请求不再返回,多是死锁、通信挂起或 CUDA 上下文损坏;用 py-spy 抓进程栈判断卡点,再结合 dmesg 与引擎日志定位。

抓 Python 栈(不重启进程)

抓 Python 栈(不重启进程)
pip install py-spy            # 建议装在独立环境,避免污染服务依赖
py-spy dump --pid <引擎PID>   # 查看各线程当前调用栈
py-spy top  --pid <引擎PID>   # 观察热点线程
  • 卡在多机通信:核对网络与通信超时配置(通信卡死通常不会自愈)
  • 卡在 GPU 相关调用且 dmesg 有 Xid:CUDA 上下文可能已损坏,按维护流程重启进程
  • 完全抓不到栈:先保全证据(日志、dmesg、nvidia-smi -q),再升级处置
先分清「慢」与「挂」:观察一分钟的水位与吞吐曲线,缓慢推进与完全不动处理方式不同。

易错点

  • 直接重启丢弃现场:挂起类故障复现成本高,栈与日志是仅有的线索

数据来源与参考

  • py-spy 官方仓库文档(github.com/benfred/py-spy)
  • NVIDIA 官方文档:Xid Errors(docs.nvidia.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌