3

私はnode.jsを使用して、軽量で需要の高いRESTプラットフォームを構築し、社内アプリを構築し始めています。1つの問題は、私の開発環境とApacheとnode.jsの共存に関連しています。Apacheがノードにリクエストをリダイレクトすることでポート80を「共有」する方法についての投稿がたくさんあるので、それらを共存させることに問題はありません。

http://arguments.callee.info/2010/04/20/running-apache-and-node-js-together/ http://www.readwriteweb.com/hack/2010/12/how-to-run- apache-and-nodejs.php

そして、Apacheへのノードプロキシ:

https://github.com/nodejitsu/node-http-proxy

ただし、必要と思われる質問の1つは、プロキシ時、特にApacheを使用してノードをプロキシする場合のパフォーマンス「ヒット」に関連しています。私の本番環境はポート80でリッスンする純粋なnode.jsソリューションになりますが、理論的には、Apacheが介入して最初のI / Oを処理することはなく、node.jsを使用することによるパフォーマンス上の利点のほとんどをIから打ち負かします。 / Oパースペクティブ?このボックスが何千ものリクエストやロングポーリングなどを受け取っている場合、Apacheリダイレクトは多くのスレッドを生成せず、シングルスレッドのnode.jsに渡されますか?

私が言ったように、ノードは初めてなので、この問題に頭を悩ませようとしています。

4

1 に答える 1

0

あなたは基本的な考えを正しく理解しました。

Apacheに最初にリクエストを処理させると、それがチェーンの一部になり、チェーン内で最も弱いリンクである場合、アプリケーションの速度が低下する可能性があります。

標準構成では、同時リクエストの数が少ない場合、Apacheは遅くありませんが、処理されるリクエストが多いほど、Apacheによって使用されるRAMが多くなります。いくつかの持続的接続を使用している場合は、そこでいくつかの制限に簡単に達する可能性があります。

ApacheにはさまざまなMPM(マルチプロセッシングモジュール)があります。デフォルトではmpm_prefork、メモリを大量に消費することがわかっているものを使用します(接続ごとに1つのスレッド)。
node.jsと同様のモデルを使用して接続を処理するものに切り替えることができますmpm_worker。これは、アーカイブしようとするタスクの種類に適しています。(イベント接続処理ですが、他のモジュールとのいくつかの癖があり、mod_phpスレッドセーフではなくなりました。)

いつものように、最善の解決策は次のとおりです。さまざまなことを試し、いくつかのベンチマークを作成し、自分に最適なものを採用します。

于 2012-06-12T11:47:20.803 に答える