处理 Cloud Run 容器关闭

Kol*_*ban 5 google-cloud-platform google-cloud-run

在编写 Cloud Run 服务时,我们开发了一个容器来侦听PORT环境变量以处理传入的 HTTP 请求。容器的一个实例启动并处理请求,然后在完成原始请求后存活一段时间,以防有进一步的请求到达。如果没有进一步的请求,GCP 会关闭容器。正是在这个领域,我有一个问题。

集装箱内是否有挂钩、信号或其他迹象表明集装箱正在关闭?

在我的示例中,我的容器想要干净地结束。也许它想关闭连接或执行一些缓存的快速刷新。

Kol*_*ban 5

在这里可以找到 Cloud Run 上精彩问答的常见问题解答。该常见问题解答中有一个项目内容如下:

\n\n
\n

Cloud Run 服务的终止信号是什么?

\n\n

目前,\n Cloud Run 会终止容器,同时使用 unix 信号\n 9 (SIGKILL) 缩放至零。SIGKILL 不能被应用程序捕获(捕获)。\n 因此,您的应用程序应该可以被突然终止。

\n
\n\n

相关且重要的条目还写道:

\n\n
\n

我的服务何时会缩减为零?

\n\n

Cloud Run 不提供任何保证服务“温暖”的时间。\n 这取决于容量和 Google\xe2\x80\x99s\n 实施细节等因素。

\n\n

一些用户发现他们的服务保持热状态长达一个小时或更长时间。

\n
\n\n
\n\n

观点

\n\n

我觉得有趣的是这个故事似乎是即时发生的SIGKILL。如果我们将 Docker 作为容器环境的基础,我们可以阅读有关docker stop 的内容,这似乎是干净地停止容器的方法。在它自己的描述中说:

\n\n
\n

容器内的主进程将收到 SIGTERM,并在宽限期后收到 SIGKILL。

\n
\n\n

这似乎表明,对于正常的Docker 容器停止,运行容器的进程将收到信号。

\n