1

最近、Python WSGI ベースのフレームワーク (Pyramid と Flask) を使い始めました。私はずっと Apache を使用してきましたが、最近、node.js や Nginx のような非同期のノンブロッキング イベントベースのテクノロジが注目されています。

だから私は、私のアプリケーションが本番環境に入ったら、Nginx の仮想クラウド サーバーで実行され、超高速になると決めました...しかし、思ったよりも...ちょっと待ってください...wsgiアプリケーションは、設計によるブロッキング アプリケーションです。では、wsgi アプリケーションは、実際には Apache よりも Nginx での動作が悪いのではないでしょうか? おそらくApacheは、マルチスレッドを備えた私のアプリケーションよりもはるかに優れています.

とにかく、今、私は本番環境で何を使用するかを理解しようとしているので、そのように準備して最適化することができます. 私はこの分野ではほとんど初心者なので、いくつかのアイデアはありますが、どのルートを取るべきかわかりません.

1.) Have nginx serve my wsgi app, but create some kind of load balancer that sends requests to various nginx instances, as running single process would probably fail miserably as my python app would be blocking it. So I would have 4-8 nginx's running.
2.) Have apache serve everything, wsgi+static
3.) Have apache serve the app via mod_wsgi, and nginx serve static files
4.) Any other solutions?

パフォーマンス、リソース使用率、信頼性、利便性の間で最適なバランスを探しています。正しく構成されていれば、nginx または apache がアプリのボトルネックになるとは思いません。

ありがとう

4

3 に答える 3

0

それらを設定し、いくつかのベンチマークを実行して、どちらがアプリケーションで最適に動作するかを確認することを検討する必要があります。

リソースのニーズとアプリケーションが接続を処理する方法に応じて、ApacheまたはNginxのいずれかが有益な場合があります。

于 2013-02-07T04:01:18.623 に答える
0

nginx で WSGI アプリケーションをどのように実行するつもりなのか、あなたは言いません。ngx_wsgi_module を見ている場合は、nginx プロセス内での実行によるブロックの問題が発生するため、そうしないでください。見る:

nginx を、FASTCGI、SCGI、uWSGI を使用して、またはバックエンドとして gunicorn の下で実行されている WSGI アプリケーションへのプロキシとして使用することについて話している場合は、nginx が特定のリクエストを待っている間にブロックしますが、問題ありません。 WSGI アプリケーションでは、非同期設計により、プロキシ時に同時要求を処理する能力が高くなります。

于 2013-02-07T02:18:15.450 に答える