0

NodeJS にアプリがあります。

最近、より多くのトラフィックを取得しており (これは私にとっては新しい経験です)、1 つのプロセスがファイルシステムよりも多くのファイルを開こうとしたときに発生する「EMFILE: 開いているファイルが多すぎます」というエラーが発生しています。許可します。

この制限を引き上げたので、今のところ問題ありません。ただし、この解決策がいつまで続くかはわかりません...

私は疑問に思っています:トラフィック量が増加しているノードアプリケーションをスケーリングするために一般的に使用される他のオプションは何ですか? (特に、開いているファイルの制限の問題を念頭に置いて。)

クラスタリングを可能にする PM2 プロセス マネージャーが私の目を引きます (アプリケーションのすべてのインスタンスが独自のコアを必要とすることを理解しているのは正しいですか?つまり、単一のコアで 4 つのインスタンスを実行することはできませんか?)。定期的に使用される他のテクニックはありますか?

前もって感謝します)

4

1 に答える 1

0

PM2 は、Node の複数のインスタンスを実行したい場合の簡単なソリューションです。もう 1 つの一般的な代替手段は、クラスター モジュールhttp://nodejs.org/api/cluster.html 別の http サーバーを構成する必要があることに注意してください。ユーザーリクエストをNodeプロセスにリバースプロキシするNginxなど。

コアの数に関係なく、任意の数の Node プロセスを実行できます。ただし、各ノード プロセスは 1 つのスレッドであり、各コアは一度に 1 つのスレッドを実行できるため、最適な構成はコアの数がノード プロセスの数と一致する場合です。ノード プロセスの数がコアの数よりも多い場合、負荷がかかると、プロセッサが実行する必要がある冗長なコンテキスト スイッチが原因で、パフォーマンスが低下します。

于 2015-01-28T21:07:25.667 に答える