Azure Container Jobs执行失败无日志,如何排查容器终止原因?
排查Azure Container Jobs退出码139的问题
1. 获取容器控制台日志
通过Azure Portal查询
进入对应Container App环境的目标Job(acjob3),切换到日志标签页,使用精准的Kusto语句过滤日志:
// 拉取容器控制台日志 ContainerAppConsoleLogs_CL | where ContainerName_s == "acjob3" | order by TimeGenerated desc
如果存在重复的ContainerAppSystemLogs_CL表,可通过资源ID指定环境过滤:
ContainerAppSystemLogs_CL | where _ResourceId == "/subscriptions/你的订阅ID/resourceGroups/你的资源组/providers/Microsoft.App/managedEnvironments/你的环境名" | where ContainerName_s == "acjob3" | order by TimeGenerated desc
通过Azure CLI拉取
执行以下命令直接获取Job的日志输出:
az containerapp job logs show --name acjob3 --resource-group 你的资源组名 --environment 你的环境名
2. 解析退出码139的常见原因
退出码139对应SIGSEGV(段错误),常见触发场景:
- 应用代码存在内存访问错误(如空指针引用、数组越界)
- 容器内存配额不足,进程因内存耗尽被终止(部分场景下OOM会返回139而非标准137)
- 依赖库版本不兼容,导致运行时崩溃
3. 补充排查手段
- 本地复现运行:将Job使用的镜像拉到本地,用Docker模拟运行查看错误:
docker run --name test-acjob3 你的镜像地址 - 调整资源限制:临时调高Job的内存分配,排除内存不足导致的崩溃
- 确认应用日志输出:确保应用将错误日志输出到stdout/stderr,Azure会自动收集这些日志到
ContainerAppConsoleLogs_CL表
内容的提问来源于stack exchange,提问作者Dartos Koste
相关产品推荐
相关产品推荐

