データベースを集中的に使用する 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 プロセスが少なくなることです。