Apacheは本番環境で実行が遅くなりました。しばらく答えを検索した後、私はようやく#apache IRCチャネルに行き、プロは次のコマンドでapacheモードを確認してもらいました。
sudo apachectl -V
そして、サーバーMPMがpreforkであることがわかって驚いた。彼らは、本番サーバーではプリフォークを使用しないでくださいと強調しました。結局のところ、(おそらくDebianから継承された)Ubuntuパッケージは、ApacheでPHPを実行するための推奨される方法が proxy_fcgiとphp-fpmを明確に推奨し、最終的にfcgidを推奨しないという事実にもかかわらず、apacheをpreforkモードで実行することを主張しますプリフォークを使用:
なぜprefork mpmでmod_phpを使用すべきではないのか
- mod_phpは常にすべてのhttpdプロセスにロードされます。httpdが静的/ php以外のコンテンツを提供している場合でも、そのメモリは使用中です。
- mod_phpはスレッドセーフではなく、可能な限り最も遅い設定であるprefork mpm(マルチプロセス、スレッドなし)を使用するように強制します。
このページにはPHP-FPMの詳細も含まれていますが、これは少し複雑で不明瞭であり、多くの手動設定が含まれているようです。Ubuntu 16にはfastCGIモードなどのパッケージオプションがないのでがっかりしました。
a2enmodを使用してapacheをイベントモードに切り替えてみましたが、apacheを起動しようとすると、エラーが発生しました。
Apacheはスレッド化されたMPMを実行していますが、PHPモジュールはスレッドセーフになるようにコンパイルされていません。PHPを再コンパイルする必要があります
とにかく、パッケージインストーラーにできる限り依存して、 PHP 7.0を搭載したUbuntu 16でfastCGIモードを実行するための最小限の段階的な手順があるかどうか疑問に思いました。私は現在、説明が不十分で曖昧な指示をたくさん見ていますが、私は本番環境を誤った決定で汚してしまうのではないかと心配しています。
また、誰かがタグオプションとしてmpm-eventを追加する必要があります。それが#apache IRCの人たちが推奨したことです。