我们有一个NodeJS应用,该应用每N秒重新启动一次,没有任何明显的原因。
来自应用程序的日志正在Elastic Load Balancer(ELB)上配置的运行状况检查URL中正确显示。
尝试从命令行启动应用程序而不是依靠Opsworks进行操作后,我们发现SIGTERM
正在发送monit
信号。
在/var/messages
上的日志显示,当ELB尝试/
时,monit试图使用/health
作为TCP健康检查的URL。由于根路径在我们的应用程序中没有任何内容,因此每120秒就会重新启动
答案 0 :(得分:1)
OpsWorks为NodeJs应用程序配置监视,并将检查的硬编码硬编码到路径/
。我们找不到与此有关的文档,但在实际代码中很明显:
我们的解决方案涉及:
/
的根路径200
中,以使监视程序知道进程已启动。 (浅层健康检查)200
或500
,以了解是否需要按流程获取所需的资源。 (深度健康检查)这可能并非在每种情况下都可行,因为我们在场景中使用特定的终结点,并且没有/
的原始用途。