首页 > 解决方案 > AutoML 生成的容器立即返回 503 (GCP)。如何排除故障?

问题描述

我是容器和东西的新手,所以我提前道歉。

我在 GCP 上训练了一个 Vision 模型并将其导出为一个容器(我在这里遵循了这个)。但是,当我在 Cloud Run 上托管它时,我收到错误 503。

The request failed because either the HTTP response was malformed or connection to the instance had an error.

我在这里看到很多与高 CPU 使用率或超时有关的问题,但这会在发送请求后立即发生。日志表明容器(和 TF)启动良好,但仅此而已。

有没有办法从容器中获得更详细的输出?类似于 PHPdisplay_errors的 500 年代?

输入似乎并没有改变结果,但这是我的身体:

{"instances":[{"image_bytes":{"b64":"<insert base64>"},"key":"5e6668d92b4c8.jpeg"}]}

标签: dockergoogle-cloud-platformgoogle-cloud-run

解决方案


我已经按照Cloud Run HTTP2 Official Documentation成功部署了一个启用了 HTTP2 的容器。

Cloud Run 中的HTTP/2 支持处于预览阶段,并且工作正常。

检查文件 /varlog/system 中的 Cloud Run Stackdriver日志以查看是否存在容器退出原因。

这些 503 错误可能是由代码中的服务器套接字超时以及应用程序崩溃引起的。

由于您有 AutoML 容器,我想根据Cloud Run 官方文档,语言是 Python,Web 服务器是 Gunicorn 。Gunicorn 的默认超时时间为 30 秒,[CRITICAL] WORKER TIMEOUT如果请求超过该超时时间,则可能会失败并出现错误。您可以将 --timeout 0 添加到 gunicorn 调用以完全禁用工作超时。

因此,我建议您先查看 Stackdriver 日志,看看您是否遇到任何其他错误,然后再禁用 HTTP2,因为它按预期工作。


推荐阅读