生产sailsjs应用程序,没有停机时间pm2

时间:2015-06-10 19:48:13

标签: sails.js pm2

我有一个以群集模式运行的sailsjs应用程序,带有pm2和两个实例。想要这两个实例的主要原因之一是我可以重新启动/更新应用程序而无需将整个应用程序关闭。

enter image description here

但是,在重新启动一个实例pm2 restart 4的过程中,如果我刷新它,该网站就会变得很糟糕(这是技术术语)。我假设这是因为grunt正在做这件事并且两个实例的.tmp文件夹都被销毁了吗?

是sailsjs唯一真正的方法是让两个完整的实例在不同的端口上运行并使用类似nginx的东西作为负载均衡器,或者我错过了PM2的东西,它允许分阶段重启而不会在资源中出现任何停机或打嗝可用吗?

1 个答案:

答案 0 :(得分:1)

这里有一些问题。

  1. 你需要提供你的sails.js / node.js / pm2的版本 运行。简而言之,完整地描述您的环境 可能的。

  2. 更完整地描述您的问题有助于人们撰写更简洁明了的答案。

  3. node.js群集模式可能会发生变化(截至v0.12.4),仍然被认为是"不稳定":https://nodejs.org/api/cluster.html#cluster_cluster

  4. 在以下帖子中," mikermcneil于2014年12月3日评论"说使用pm2禁用Grunt进行生产:https://github.com/balderdashy/sails/pull/1716

    让我澄清说我直到最近才使用pm2。除了Grunt之外,它还存在套接字连接问题,而nginx处理它很好。相信我,追逐那个bug并不好玩。这是指向主题的链接:https://github.com/Unitech/PM2/issues/389

    作为替代解决方案,我选择将nginx与并行sails.js应用程序一起使用,使用redis作为套接字和会话。永远使用以保持应用程序运行并禁用grunt。将nginx指向assets文件夹以快速提供静态文件,绕过sails.js并为这些资产添加缓存。

    希望这有帮助!