在编写 Cloud Run 服务时,我们开发一个容器来监听PORT
用于处理传入 HTTP 请求的环境变量。容器的实例会启动并处理请求,然后在完成原始请求后存活一段时间,以防有更多请求到达。如果没有进一步的请求,GCP关闭容器。我在这方面有一个问题。
集装箱内是否有钩子、信号或其他指示表明集装箱正在关闭?
在我的示例中,我的容器想要干净地结束。也许它想要关闭连接或执行一些快速刷新缓存。
Cloud Run 上的精彩问答已找到 FAQhere https://github.com/ahmetb/cloud-run-faq。该常见问题解答中有一个项目内容如下:
Cloud Run 服务的终止信号是什么?
现在,
Cloud Run 终止容器,同时使用 unix 信号缩放至零
9(信号杀死)。 SIGKILL 不可被应用程序捕获(捕获)。
因此,您的应用程序应该可以被突然终止。
相关且重要的条目还写道:
我的服务何时会缩减为零?
Cloud Run 不提供任何关于其将保留多长时间的保证
服务“热情”。这取决于容量和 Google 等因素
实施细节。
一些用户发现他们的服务保持热状态长达一个小时或更长时间。
Opinion
我觉得有趣的是这个故事似乎是直接发生的SIGKILL
。如果我们以 Docker 作为容器环境的基础,我们可以阅读泊坞站 https://docs.docker.com/engine/reference/commandline/stop/这似乎是干净地停止容器的方法。在它自己的描述中说:
容器内的主进程会收到SIGTERM,之后
宽限期,SIGKILL。
这似乎表明对于normalDocker容器停止时,运行容器的进程会收到信号。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)