ユーザーの少ない「重い」PHPアプリに適したApache MPMはどれですか

ユーザーの少ない「重い」PHPアプリに適したApache MPMはどれですか

データベースを集中的に使用する PHP アプリケーションがあり、何千もの外部ネットワーク接続を処理して作成しながら何時間も実行できます。

このアプリケーションに常時接続できるユーザーは 3 人未満です。

このワークロードに最も適した Apache MPM は、prefork/mod_php ですか、それとも worker/mod_fcgid ですか?

私は Debian Lenny x64、シングル コア、4GB RAM を使用しています。

答え1

低速のマシンでは、ワーカー モードの方が適しており、CPU 使用率と負荷が低くなります。
静的コンテンツを提供する強力なマシンでは、prefork mpm の方が約 5% 高速です。

機会があれば、Apache ベンチマークでテストすることをお勧めします。Apache ベンチマーク

また、次のベンチマークもご覧ください。Apache の prefork とワーカー

データベース エンジンは同じサーバーにインストールされていますか?

答え2

Apache には、広く使用されている 2 つの MPM モジュール、Worker MPM と Pre-fork MPM があります。PHP.net では Pre-fork MPM の使用を推奨していますが、ほとんどのサイト最適化の専門家はスレッド化された Worker MPM の使用を推奨しています。驚いたことに、負荷テストではパフォーマンスの違いは比較的小さく、サーバー上で非推奨の実装を勧めるような違いではありませんでした。

答え3

FastCGI 経由の Worker + PHP は、うまく動作する傾向があります。歴史的に、スレッド化された MPM で mod_php を使用しないようにアドバイスする人が多くいました (一部のサードパーティ ライブラリがうまく動作しなかったため)。FastCGI を使用すると、基本的に PHP が Web サーバーから「切り離される」ため、この問題が回避されます。

もう 1 つの利点は、Apache のスレッド/プロセス サイズが小さくなったため、Web サーバー (静的コンテンツの提供) により多くのスレッド/プロセスを使用でき、サイトの動的部分を処理する PHP プロセスが少なくなることです。

関連情報