
ここでは 2 つのモジュールの比較トピックがあることは理解していますが、これは異なります。
私は、VPS のメモリ使用量をいくらか解放するために、cPanel サポートに連絡していました。彼らは、Apache 2.4 の「httpd」子プロセスが約 80MB の RSS を使用していることを発見しました。一方、テスト サーバーでは、同様の Apache 2.4 ビルドは、Apache 子プロセスごとに約 3MB の RSS しか使用していません。
この問題についてしばらく議論した後、彼らは Prefork を使用するのではなく、Apache 2.4 の Worker MPM に切り替えることを提案しました。
彼らが言っていることを検索したところ、Worker MPM はメモリ使用量が少ないものの、スレッドセーフではないことがわかりました。Web サイトのその他のトピックでは、Worker は PHP アプリケーションや mod_php では動作しないと書かれています。これが正しいかどうかはわかりません。
混乱しすぎていて、どうしたらいいでしょうか? アカウントで PHP スクリプトを実行していますが、スクリプトを中断したり、データを破損したりしたくありません。
皆さんの提案はありますか? Worker MPM に切り替えると、PHP アプリケーションを中断することなくメモリ不足の問題が解決されますか?
Apache の使用に関して何か解決策はありますか? 3MB の RSS と比較すると、80MB の RSS は大きすぎます。
答え1
PHP を Apache モジュールとして使用する必要がある場合は、Prefork を使用する必要があります。これは、おっしゃるとおり、PHP はデフォルトでスレッドセーフではないようにコンパイルされており、Worker MPM はスレッドを使用しているためです。
PHP を FastCgi (PHP-FPM) として使用できる場合は、Worker MPM を使用できます。
ちなみに、現在 PHP を導入する最良の方法は、おそらく Nginx と PHP-FPM を使用することです。