当社のウェブサイトはリアルタイムの更新の必要性を開発しており、さまざまな彗星/ロングポーリングソリューションを検討しています。調査の結果、4つのトルネードインスタンス(Amazon EC2でホストされている)へのリバースプロキシとしてnginxを決定しました。現在、従来のLAMPスタックを使用しており、PHPでかなりの量のコードを記述しています。このソリューションをより適切にサポートするために、PHPコードをPythonに変換する用意があります。これが私の質問です:
クアッドコアプロセッサを想定して、nginxを4つのトルネードインスタンスと同じサーバーで実行しても問題ありませんか、それとも2つの別々のサーバー(nginx用と4つのトルネードプロセス用)を実行することをお勧めしますか?
Nginxの前でHAProxyを使用する利点はありますか?Nginxはそれ自体で負荷分散をうまく処理しませんか?
私の調査によると、Nginxには優れたURLリダイレクトモジュールがないようです。リダイレクトにRedisを使用することをお勧めしますか?もしそうなら、RedisはNginxの前にあるべきですか、それとも後ろにあるべきですか?
アプリケーションコードの大部分は、リアルタイムの更新には関与しません。このコードには、いくつかのデータベースクエリとファイルシステムの読み取りが含まれているため、非ブロッキングアプリサーバーには明らかに適していません。私の調査から、ブロッキングの問題は複数のTornadoインスタンスを使用するだけで軽減されることがわかりましたが、他の人は通話をブロックするために別のアプリサーバー(Gunicorn / Django / Flaskなど)を使用することを提案しています。非ブロッキングサーバーを使用するときにブロッキング呼び出しを処理するための最良の方法は何ですか?
コードをPHPからPythonに変換するには、時間のかかるプロセスになります。Nginxの背後でApache/PHPとTornadoを同時に実行することは許容されますか、それとも言語(gunicorn / django / flaskを使用するtornadoまたはtornado自体)に固執する必要がありますか?