web-dev-qa-db-ja.com

Apacheを完全に制御できる場合、mod_wsgi埋め込みモードを使用する必要がありますか?

Django経由でmod_wsgiを使用して、共有ホスティングで多数のサイトとアプリケーションを管理しています。最初から デーモンモード を使用する予定でした(再起動の問題を回避するため)が、専用のApacheインスタンスを実行できるプランを購入することになりました。便宜上、デーモンモードを使用し続けましたが、必要以上にサーバーリソースを消費しているのではないかと考えています(サイトごとに異なるプロジェクトがあり、それぞれに独自の process および process group )、したがって、埋め込みモードへの切り替えを検討しています。

それは賢明なことでしょうか?必要なときにいつでもApacheを再起動することができ、子プロセスとソケットはそれほど必要ありません(リソースの使用量が減ることを願っています)。しかし、そうすることでそれらのサイトを管理するのが難しくなるかどうか(1つを更新する必要がある場合、すべてを再起動する必要があります)、またはアプリケーションが互いに適切に分離されないかもしれません。

これらの問題は本当に重大なものですか(それともささいな迷惑なものですか)、私が予測できない他の欠点はありますか?このセットアップのあらゆる面でのアドバイスを探しています-保守性、パフォーマンス、セキュリティなど。現在のセットアップを改善するためのヒントも歓迎します(基本的なmod_wsgiセットアップを正しく構成する方法を知っていますが、私は無知です) threadsprocessesなどの適切な値について)。

1
mgibsonbr

たくさんのサイトはいくつあり、どのようにデーモンモードを設定しましたか?

最初の印象は、複数のサイトをホストしている場合、各プロセスの数を個別に制御することができないため、埋め込みモードを使用するほうが悪いということです。したがって、サイトが本当に単一のマルチスレッドプロセスのみを必要とする場合、Apacheが埋め込みモード用に作成する子プロセスの数ごとにメモリ使用量を増やします。それをすべてのサイトに掛けると、あなたははるかに悪化するでしょう。

一般的なルールとして、埋め込みモードの使用をお勧めするのは、1つのサイトがあり、その1つのサイトに対してApache MPM設定が適切にセットアップされていることを保証する場合のみです。 Apacheのデフォルトは、Python Webアプリケーションでは非常に間違っています。

したがって、デーモンモードを使用することをお勧めします。デーモンプロセスグループごとに1つのサイトがあり、必要なスレッド数が最小限の単一のデフォルトプロセスを優先します。

セットアップに関するより多くの情報を提供し、おそらくより多くの情報を提供できます。ただし、リソースの使用は特定のWebアプリケーションに関係するものであり、通常はサーバーには関係しないことに注意してください。

また見に行くことをお勧めします。

http://lanyrd.com/2012/pycon/spcdg/

2