0

常に少数の同時ユーザーがいる小さなsocket.ionode.jsアプリを実行しています。ほとんどの場合、単一のプロセスで100%実行できます(私のLinodeまたはHeroku [1]のどちらでも)。

私はそれを数日間少し公表したいと思っています。その間、かなりの量のトラフィックが予想されます。これは、同時WebSocket/xhrポーリング接続を意味します。ただし、2つのsocket.io接続は相互に通信する必要はありません。

アプリはかなり長い間私のLinodeで実行されていましたが、最近、1つの無料のherokudynoに転送しました。xhr-polling(herokuはWebSocketをネイティブにサポートしていません)で実行していても、非常に高速です。

Linodeを利用して、アプリを基本的に実行および負荷分散する方法に興味があります。ただし、速度が低下し始めた場合は、ユーザーを実行中のheroku dynoにプッシュします(またはその逆)。これはnode-http-proxyのようなもので可能になるはずですが、正しく実行するのに苦労しました。うまくいけば、ポイントに到達するように微調整するか、スイッチをフリックして、2番目のサイトへのユーザーのバランスを取り始めることができます。

基本的に、私は正しい方向に向けられることを望んでいます。コードはいいのですが、必須ではありません。ソリューションはノード内にある必要はありません。

ありがとうございました!

[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 に答える