2

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

在此处输入图像描述

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

Sailsjs 唯一真正的方法是让两个完整的实例在不同的端口上运行并使用 nginx 之类的东西作为负载均衡器,还是我错过了 PM2 允许分阶段重启而没有任何停机时间或可用资源中断的东西?

4

1 回答 1

1

这里有几个问题。

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

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

  3. node.js 集群模式可能会改变(从 v0.12.4 开始)并且仍然被认为是“不稳定的”:https ://nodejs.org/api/cluster.html#cluster_cluster

在以下线程中,“mikermcneil 于 2014 年 12 月 3 日发表评论”表示使用 pm2 禁用 Grunt 进行生产:https ://github.com/balderdashy/sails/pull/1716

让我澄清一下,直到最近我才使用 pm2。除了 Grunt,它还存在套接字连接问题,而 nginx 处理得很好。相信我,追捕那个虫子并不好玩。这是线程的链接:https ://github.com/Unitech/PM2/issues/389

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

希望这可以帮助!

于 2015-06-12T16:01:14.663 回答