cf stop 命令不会在 bluemix 上执行正常关闭

cf stop command does not perform graceful shutdown on bluemix

我在 bluemix 中有一个节点应用程序,它在内存中保存一些事务缓存,我想在应用程序关闭之前将此缓存刷新到数据库。所以我有适当的事件处理程序来拦截 SIGTERM/SIGINT 信号,并且在我的笔记本电脑上一切正常,但是,cf stop 命令似乎没有执行正常关机。

不幸的是,没有关于这个主题的明确文档,在 cloudfoundary app-lifecycle 文档的一个地方他们确实提到第一个 SIGTERM 发出然后等待 10 秒等,但我没有看到这种情况发生。可能是他们这边的错误。 https://docs.cloudfoundry.org/devguide/deploy-apps/app-lifecycle.html

有没有人注意到这个问题并且可能有解决方法?

CF 首先发送 SIGTERM,但由于其他进程启动该应用程序的方式,它没有正确传播到您的应用程序。

作为解决方法,通过设置 CF 环境变量 BLUEMIX_APP_MGMT_INSTALL=false 禁用应用程序管理,并在 package.json 文件中为应用程序的启动命令添加前缀 'exec'(例如 exec node app.js ).