3

または: 適切な cgi + ロング ポーリングのセットアップを取得するにはどうすればよいですか?

Apache 2 で (mod_perl) Web アプリケーションを実行しています。既存のコードをそのまま維持し、ロング ポーリングも実行したいと考えていますが、進行中のロング ポーリング リクエストごとにワーカーを占有することになり、それは実行されません。私たちのために働きます。

ロング ポーリング/コメット リクエストを処理するために多くのリクエストを同時に処理できるアプリケーションを作成する方法は既に知っていますが、外部に対して1 つのIP ポートのみを開くことが重要です。

mod-proxy でリバース プロキシに入ります。mod-proxy が結果が返されるのを待機/ブロックするか、待機/ブロックしないか、または"Transfer-Encoding: Chunked" に依存するかどうかについて、矛盾する情報を見てきました。どちらが正しいですか?「Transfer-Encoding」と何の関係がありますか?

また、nginx はリバース プロキシで Apache2 よりも優れていることも読みました。nginx を apache の前に配置しても問題ありませんが、Apache2 だけの方が簡単です。また、ファイルのダウンロード/アップロード、エラー ページ、ログに問題がある可能性があるというレポートも読みました。ここに落とし穴はありますか?

comet リクエストを処理するサーバーが localhost:8080 をリッスンしているとします。

では、Apache + mod_proxy のみを使用して、多数のロング ポーリング クライアントを含むスケーラブルなセットアップを作成できますか? Apache とコメット サーバーの前に nginx を使用しますか?

これは、comet-server を作成するための mod_proxy と Apache 2 の理解に似ていますが、まったく同じ質問ではありません。

4

1 に答える 1

0

Apache Httpd は接続ごとのスレッド モデルを使用しており、長いポーリングで非常に高速にスレッドが不足します。httpd がリバース プロキシとして動作している実稼働環境でこの問題に遭遇しましたが、httpd でロング ポーリングを機能させる方法はないようです。

nginx (非 Java サーバー用) または jetty (j2ee サーブレット コンテナーとして) の使用を検討してください。どちらもスレッド モデルごとに複数の要求を使用し、この問題の影響を受けません。

于 2013-06-26T14:01:05.540 に答える