网站服务器

全站加速_短域名解析_排行榜

字号+ 作者:微辰云 来源:微辰云 2021-06-10 04:16 我要评论( )

CloudRun现在会在容器实例终止之前向您的容器实例发送一个SIGTERM信号,这是由于一个事件(如scale down或deleted revision)造成的。通过处理此信号,您现在可以优雅地终止应用程序并执行一些清理任务,而不是突然关闭容器。 在本博客中,我们将探讨一些

全站加速_短域名解析_排行榜

CloudRun现在会在容器实例终止之前向您的容器实例发送一个SIGTERM信号,这是由于一个事件(如scale down或deleted revision)造成的。通过处理此信号,您现在可以优雅地终止应用程序并执行一些清理任务,而不是突然关闭容器。

在本博客中,我们将探讨一些用于此的用例,以及您可以如何尝试。

优雅关闭

当容器实例在Cloud Run上关闭时,SIGTERM信号将被发送到容器,您的应用程序将有10秒的时间退出。如果此时容器仍未退出,则会发送SIGKILL信号(您无法捕获该信号)以突然关闭应用程序。如果您选择不为SIGTERM编写信号处理程序,您的进程将立即终止。

使用此终止信号,大数据前景,个人云服务器,您可以在应用程序代码中执行各种"正常关闭"任务:

正常终止信号主要在应用程序缩小未获得流量的容器实例时发送到应用程序。因此,您不需要在信号处理程序中处理正在进行的请求。但是,有时您可能会在由于基础结构原因而导致容器关闭之前收到此信号,并且您的容器可能仍有飞行中的连接。因此,优美的终止并不总是可以保证的。

捕获信号,正确的方法

大多数编程语言提供了一些库来捕获SIGTERM等终止信号,并在程序终止之前运行例程。

如果应用程序在云运行时没有收到终止信号,最突出的原因可能是可能是因为您的应用程序没有作为init进程(PID 1)运行,并且它的父进程没有正确地转发信号。

发生这种情况的主要原因是容器映像Dockerfile中的ENTRYPOINT语句没有直接设置到您的应用程序进程。例如Dockerfile语句:

ENTRYPOINT节点服务器.js

内部翻译为:

入口点/bin/sh","-c",云服务器租用,"节点服务器.js"]

当您的Dockerfile被执行以构建容器映像时。

最值得注意的是,GNU/bin/sh和其他shell(如bash)在默认情况下不会将信号转发给子进程。因此,您应该以向量形式编写entrypoint语句,如下所示,以防止应用程序作为shell的子进程执行:

entrypoint node","服务器.js"]

同样,如果您使用入口点脚本启动容器中的后台进程,淘客大玩家,考虑使用适当的init进程,该进程可以将信号转发给子进程,手机自助建站,例如tini、dumb init或supervisord。(我在这里比较了多进程容器用例的init进程替代方案。)

转载请注明出处。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 域名交易_阿里云时间_哪家好

    域名交易_阿里云时间_哪家好

    2021-06-10 10:33

  • 服务器_app域名注册_学生机

    服务器_app域名注册_学生机

    2021-06-10 09:46

  • 全站加速_建个企业网站多少钱_代金券

    全站加速_建个企业网站多少钱_代金券

    2021-06-10 06:57

  • 虚拟主机_已备案老域名_哪家好

    虚拟主机_已备案老域名_哪家好

    2021-06-10 05:04

网友点评