問題タブ [node-cluster]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - Node JS サーバー アプリケーションのスループットを向上させる手順
POSTリクエストボディを介してjsonデータ(約1KB)を受け入れる非常に単純なnodejsアプリケーションがあります。応答はすぐにクライアントに送り返され、json は非同期で Apache Kafka キューにポストされます。同時リクエストの数は 1 秒あたり 10000 に達する可能性があり、3 台の異なるマシンで実行されている Apache Jmeter を使用してシミュレートしています。目標は、失敗したリクエストなしで 1 秒未満の平均スループットを達成することです。
4 コアのマシンでは、アプリは 1 秒あたり最大 4015 のリクエストをエラーなく処理します。ただし、目標は 1 秒あたり 10000 リクエストであるため、ノード アプリをクラスター化された環境にデプロイしました。
同じマシンでのクラスタリングと、2 台の異なるマシン間のクラスタリング (ここで説明) の両方が実装されました。Nginx は、2 つのノード インスタンス間で着信リクエストをラウンド ロビンするためのロード バランサーとして使用されました。スループットが大幅に向上することを期待していましたが (ここに記載されているように)、結果は逆でした。成功したリクエストの数は、1 秒あたり約 3100 リクエストに減少しました。
私の質問は次のとおりです。
- クラスタ化されたアプローチで何がうまくいかなかったのでしょうか?
- これは Node アプリケーションのスループットを向上させる正しい方法ですか?
- また、Tomcat コンテナー内の Java Web アプリケーションで同様の演習を行ったところ、1 つのインスタンスで 4000 の要求が期待どおりに実行され、2 つのインスタンスを持つクラスターで約 5000 の成功した要求が実行されました。これは、nodejs が Tomcat よりも優れているという私たちの信念と矛盾しています。リクエストモデルごとのスレッドのため、Tomcatは一般的に優れていますか?
よろしくお願いします。
javascript - ワーカー NodeJS から値を合計する
何かを並行して計算するマスターとワーカーがあります。
それらの結果をどのように要約しますか?
各ワーカーが仕事を終えた後、彼は自殺し、「res」変数には値がないため、変数に累積することは不可能です。
何か方法はありますか?