ワーカー MPM または Prefork?

ワーカー MPM または Prefork?

ここでは 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 を使用することです。

関連情報