如何导出runc的堆栈追踪信息以排查runc运行时卡住的问题
runc 卡住时导出堆栈追踪信息操作指南
- 首先确认你使用的 runc 版本已开启调试特性:官方发布的正式版本默认已启用 debug 编译参数,自行编译的版本需在编译时添加
DEBUG=1配置,确保堆栈导出功能可用。 - 定位卡住的 runc 进程 PID,可执行命令:
pgrep runc或ps aux | grep runc,记录得到的进程ID为<RUNC_PID>。 - 向目标进程发送 SIGUSR1 信号触发堆栈导出,执行命令:
kill -SIGUSR1 <RUNC_PID> - 接收堆栈输出:
- 若 runc 进程由 systemd 或 containerd 等托管,堆栈信息会输出到进程的标准错误流,可直接从 journald 或对应运行时的日志目录中抓取
- 若为手动执行的 runc 命令,堆栈会直接打印到启动命令的终端窗口
- 若需要持久化存储堆栈,可在启动 runc 时提前重定向标准错误,示例:
runc run <容器ID> 2> /var/log/runc_debug.log,后续触发的堆栈会自动写入该日志文件
注意:SIGUSR1 信号仅会触发 runc 输出堆栈信息,不会终止进程运行,也不会影响关联容器的正常运行,无业务侧可用性风险。
内容的提问来源于stack exchange,提问作者systolicDrake
相关产品推荐
相关产品推荐

