0

我运行一个小的 socket.io node.js 应用程序,它总是有少量并发用户。在大多数情况下,它可以 100% 的时间在单个进程上运行(无论是在我的 Linode 还是 Heroku[1] 上)。

我希望将它宣传几天,在此期间我预计会有相当多的流量。这意味着并发 websocket/xhr-polling 连接。但是,两个 socket.io 连接不必相互通信。

该应用程序在我的 Linode 上运行了很长一段时间,但我最近将其转移到了一个免费的 heroku dyno 上。即使使用 xhr-polling(heroku 本身不支持 websockets)运行它也非常快。

我很好奇如何利用我的 Linode 来运行和负载平衡应用程序。但是,如果它开始变慢,请将用户推到正在运行的 heroku dyno(反之亦然)。这应该可以使用node-http-proxy 之类的东西,但是我很难让它正常运行。希望我可以对其进行微调,使其达到某个点,或者我可以轻弹一个开关,它会开始平衡用户到第二个站点。

基本上,我只是希望指出正确的方向。代码会很好,但不是必需的。解决方案甚至不必在节点中。

谢谢!

[1] 我也尝试了 nodejitsu 很长一段时间,只是没有发现它可以用于生产。

编辑:我应该只使用一个简单的循环,如此处所述?如果我想偏爱其中一个怎么办?

4

1 回答 1

0

您可以将Foreman用于此类工作:

档案

web: node app.js

然后只需在命令行中调用它:

$ foreman start -c web=4

这将创建 4 个节点应用程序实例,侦听不同的端口。

08:29:41 web.1  | started with pid 2576
08:29:41 web.2  | started with pid 1968
08:29:41 web.3  | started with pid 2712
08:29:41 web.4  | started with pid 5280
08:29:42 web.3  | Express server listening on port 5002
08:29:42 web.1  | Express server listening on port 5000
08:29:42 web.2  | Express server listening on port 5001
08:29:42 web.4  | Express server listening on port 5003

然后,您可以只使用 nginx 并将它们设置为您的上游。

于 2013-02-25T00:33:08.623 回答