php をインストールするときに、注意深い人なら、php-fpm モジュールもインストールされていることがわかります。fpm モジュールはリクエスト プロセスの処理を担当します。 fpm の関連操作は、サーバーが応答できるリクエストの数に直接影響します。適切な設定を行うと、処理効率が効果的に向上します。そうでないと、502 ゲートウェイ タイムアウトまたは 504 エラーが発生します。
/etc/php/7.2/fpm/pool.d の下にある www.conf ファイルを開いて、次のパラメータを見つけてみましょう。
pm=dynamicpm.max_children=5pm.start_servers=2pm.min_spare_servers=1pm.max_spare_servers=3;pm.max_requests=500
これらは、著者が PHP をインストールした後のデフォルトのパラメータです。以下で 1 つずつ説明します。
1つ目のdynamicは、プロセスの処理モードが動的であることを示しており、それに対応する静的モードもあります。
pm が staic に設定されている場合、パラメーター pm.max_childern のみが有効になります。
pm が動的に設定されている場合、次の 4 つのパラメータが有効になります。 php-fpm の実行が開始されると、システムは pm.start_servers php-fpm プロセスを開始し、システムのニーズに応じて pm.min_spare_servers と pm.max_spare_servers の間で php-fpm プロセスの数を動的に調整します。
2 番目のパラメーター pm.max_children は、フォーク (開始) できるプロセスの最大数を示します。明らかに、その量が大きいほど、同時に実行できるリクエストが増加します。当然、接続が遅くなったり、遅くなったりすることはありません。リクエストの待機時間は長くなりますが、CPU またはメモリはまだ使用可能です。占有率は高くありません。この値は、静的モードで開かれた php-fpm プロセスの数を指し、動的モードでの php-fpm プロセスの最大数を制限します。
3 番目のパラメーター pm.start_servers は、動的モードの場合、いくつかのプロセスが初期状態で開始され、必要に応じて動的に調整されることを示します。これは、2 つのパラメーター pm.min_spare_servers および pm.max_spare_servers によって決定されます。
4 番目のパラメーター pm.min_spare_servers は、動的モードでアイドル状態にある php-fpm プロセスの最小数と、アイドル プロセスをクリーンアップした後に保持される数を表します。
5 番目のパラメーター pm.max_spare_servers は、動的モードでアイドル状態にある php-fpm プロセスの最大数を表します。つまり、アイドル プロセスがこの値に達すると、クリーンアップされます。
6 番目のパラメーター pm.max_requests は、プロセスを破棄して再起動するまでのリクエストの数を示します。これにより、メモリ リークを回避できます。
明らかに、ここでの max_children は 5 ですが、トラフィックが増加すると明らかに不十分になります。最も直接的な影響は pm.max_children の値です。 : メモリと CPU のシステム リソースが許せば、大きいほど良いです。たとえば、fpm プロセスは約 15 ~ 25M です。サーバーに 4G のメモリがある場合、これは理想的な条件下でのみ可能です。完全に使用する場合は 150 ~ 300 にし、サーバーの状態を観察して調整します。
一般に、大規模なメモリ サーバー (32 および 64 G 以上など) は、同時実行効果が高い静的モードを検討できます。小規模なメモリ サーバーは、オンデマンドで自動的に制御できる動的モードを検討できます。
自分の状況に応じてストレステストを行ったり、サーバーの状況に応じて調整したりできます。