この記事では主に php-fpm の静的側面と動的側面を紹介し、参考として提供します。
php-fpmのstaticとdynamicの実行方法の比較を見てみましょう
少し前にphp-fpmを設定したときに、2つの実行方法があることを偶然発見しました。 Apacheと同様に、プロセス数も設定に応じて動的と静的に分けることができます。
php-fpm には 2 つの方法があります。1 つは、リクエストが発生したときに、指定した数の php-fpm プロセスを直接開く方法です。量が多くなるとphp-fpmのプロセス数を動的に上限まで増やし、アイドル状態の場合はアイドル状態のプロセス数を下限まで自動的に解放します。
これら 2 つの異なる実行方法は、サーバーの実際のニーズに応じて調整できます。
最初に、これに関連するいくつかのパラメーターについて説明します。それらは、pm、pm.max_children、pm.start_servers、pm.min_spare_servers、および pm.max_spare_servers です。
pm は使用方法を意味し、静的または動的の 2 つの値から選択できます。古いバージョンでは、動的は Apache のようなものと呼ばれていました。構成ファイルに記載されている指示に注意してください。
次の 4 つのパラメータは次のことを意味します:
pm.max_children: 静的モードで開かれた php-fpm プロセスの数。
pm.start_servers: 動的モードで開始する php-fpm プロセスの数。
pm.min_spare_servers: 動的モードでの php-fpm プロセスの最小数。
pm.max_spare_servers: 動的モードでの php-fpm プロセスの最大数。
dm が static に設定されている場合、パラメーター pm.max_children のみが有効になります。システムは、設定された数の php-fpm プロセスを開きます。
dm が動的に設定されている場合、pm.max_children パラメーターは無効になり、次の 3 つのパラメーターが有効になります。 php-fpm の実行が開始されると、システムは pm.start_servers php-fpm プロセスを開始し、システムのニーズに応じて pm.min_spare_servers と pm.max_spare_servers の間で php-fpm プロセスの数を動的に調整します。
それでは、どの実行方法がサーバーに適しているのでしょうか?実際、Apache と同様、私たちが実行する PHP プログラムでは、実行後に多かれ少なかれメモリ リークが発生します。これは、php-fpm プロセスが最初は約 3M のメモリしか占有せず、一定期間実行すると 20 ~ 30M に増加する理由でもあります。したがって、動的方法は冗長なプロセスを終了し、一部のメモリをリサイクルして解放できるため、メモリの少ないサーバーまたは VPS で使用することをお勧めします。具体的な最大量はメモリ/20M に基づいて取得されます。たとえば、512M VPS の場合、pm.max_spare_servers を 20 に設定することをお勧めします。 pm.min_spare_servers については、サーバーの負荷に応じて 5 ~ 10 の間で設定することをお勧めします。
また、比較的大きなメモリを備えたサーバーの場合は、静的に設定すると効率が向上します。 php-fpmのプロセスを頻繁に切り替えるとラグが発生するため、メモリに余裕がある場合はstatic機能をオンにした方が良いでしょう。メモリ/30Mに応じた数量も取得できます。たとえば、2GB メモリを搭載したサーバーは 50 に設定でき、4GB メモリを搭載したサーバーは 100 に設定できます。
このサイトは 512M VPS 上に構築されているため、設定したパラメータは次のとおりです:
pm=dynamic
pm.max_children=20
pm.start_servers=5
pm.min_spare_servers=5
pm.max_spare_servers=20
以上ですメモリを最大限に節約し、実行効率を向上させます。
各パラメータの説明を以下に示します:
pm string
プロセスマネージャーが子プロセスを管理する方法を設定します。使用可能な値: 静的、オンデマンド、動的。設定する必要があります。
static - 子プロセスの数は固定されています (pm.max_children)。
ondemand - 要求があるときにプロセスが生成されます (動的とは逆に、要求されたとき、サービスの開始時に pm.start_servers が開始されます。
dynamic - 子プロセスの数は、次の構成に基づいて動的に設定されます: pm.max_children, pm .start_servers、pm.min_spare_servers、pm.max_spare_servers。
pm.max_children int
pm が static に設定されている場合、作成される子プロセスの数を示します。 pm が Dynamic に設定されている場合、作成される子プロセスの最大数を示します。このオプションは、Apache の mpm_prefork および通常の PHP FastCGI の PHP_FCGI_CHILDREN 環境変数の設定と同様に、同時に処理できるリクエストの数の制限を設定します。 .start_serversin
起動時にのみ作成される子プロセスの数を設定します。 デフォルト値: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.min_spare_servers int
アイドル状態のサービス プロセスの最小数を設定します。
pm.max_spare_servers int
アイドル状態のサービスの最大数を設定します。pm が Dynamic に設定されている場合にのみ使用されます。
pm.max_requests int
各子の前に処理されるリクエストの数を設定します。これは、メモリ リークが発生する可能性のあるサードパーティ モジュールに役立ちます。「0」に設定すると、リクエストは常に受け入れられます。これは、PHP_FCGI_MAX_REQUESTS 環境変数と同等です。
php-fpm の
と dynamic について、少し前に php-fpm を設定したときに、Apache と同様に、プロセスの数も動的と静的の 2 つに分けられることを偶然発見しました。 php-fpm には 2 つの方法があり、1 つは指定された数の php-fpm プロセスを増減しなくなり、もう 1 つは最初に特定の数の php-fpm プロセスを開始する方法です。リクエスト量が多くなると、php-fpmプロセス数が動的に上限まで増加し、php-fpmプロセス数がアイドル状態になると、自動的に下限値まで解放されます。実行方法は、サーバーの実際のニーズに応じて調整できます。 ここで関係するいくつかのパラメーターについて説明します。それらは、pm、pm.max_children、pm.start_servers、pm.min_spare_servers、および pm.max_spare_servers です。 pm は使用方法を意味し、静的または動的の 2 つの値から選択できます。古いバージョンでは、動的は Apache のようなものと呼ばれていました。構成ファイルに記載されている指示に注意してください。
次の 4 つのパラメータは次のことを意味します:
pm.max_children: 静的モードで開かれた php-fpm プロセスの数。
dm が static に設定されている場合、パラメーター pm.max_children のみが有効になります。システムは、設定された数の php-fpm プロセスを開きます。
dm が動的に設定されている場合、pm.max_children パラメーターは無効になり、次の 3 つのパラメーターが有効になります。 php-fpm の実行が開始されると、システムは pm.start_servers php-fpm プロセスを開始し、システムのニーズに応じて pm.min_spare_servers と pm.max_spare_servers の間で php-fpm プロセスの数を動的に調整します。
それでは、どの実行方法がサーバーに適しているのでしょうか?実際、Apache と同様、私たちが実行する PHP プログラムでは、実行後に多かれ少なかれメモリ リークが発生します。これは、php-fpm プロセスが最初は約 3M のメモリしか占有せず、一定期間実行すると 20 ~ 30M に増加する理由でもあります。したがって、動的方法は冗長なプロセスを終了し、一部のメモリをリサイクルして解放できるため、メモリの少ないサーバーまたは VPS で使用することをお勧めします。具体的な最大量はメモリ/20M に基づいて取得されます。たとえば、512M VPS の場合、pm.max_spare_servers を 20 に設定することをお勧めします。 pm.min_spare_servers については、サーバーの負荷に応じて 5 ~ 10 の間で設定することをお勧めします。
また、比較的大きなメモリを備えたサーバーの場合は、静的に設定すると効率が向上します。 php-fpmのプロセスを頻繁に切り替えるとラグが発生するため、メモリに余裕がある場合はstatic機能をオンにした方が良いでしょう。メモリ/30Mに応じた数量も取得できます。たとえば、2GB メモリを搭載したサーバーは 50 に設定でき、4GB メモリを搭載したサーバーは 100 に設定できます。
このサイトは 512M VPS 上に構築されているため、設定したパラメータは次のとおりです:
pm=dynamic
pm.max_children=20
pm.start_servers=5
pm.min_spare_servers=5
pm.max_spare_servers=20
以上ですメモリを最大限に節約し、実行効率を向上させます。
各パラメータの説明を以下に示します:
pm string
プロセスマネージャーが子プロセスを管理する方法を設定します。使用可能な値: 静的、オンデマンド、動的。設定する必要があります。
static - 子プロセスの数は固定されています (pm.max_children)。
ondemand - 要求があるときにプロセスが生成されます (動的とは逆に、要求されたとき、サービスの開始時に pm.start_servers が開始されます。
dynamic - 子プロセスの数は、次の構成に基づいて動的に設定されます: pm.max_children, pm .start_servers、pm.min_spare_servers、pm.max_spare_servers。
pm.max_children int
pm が static に設定されている場合、作成される子プロセスの数を示します。 pm が Dynamic に設定されている場合、作成される子プロセスの最大数を示します。このオプションは、Apache の mpm_prefork および通常の PHP FastCGI の PHP_FCGI_CHILDREN 環境変数の設定と同様に、同時に処理できるリクエストの数の制限を設定します。 .start_serversin
起動時にのみ作成される子プロセスの数を設定します。 デフォルト値: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.min_spare_servers int
アイドル状態のサービス プロセスの最小数を設定します。
pm.max_spare_servers int
アイドル状態のサービスの最大数を設定します。pm が Dynamic に設定されている場合にのみ使用されます。
pm.max_requests int
各子の前に処理されるリクエストの数を設定します。これは、メモリ リークが発生する可能性のあるサードパーティ モジュールに役立ちます。「0」に設定すると、リクエストは常に受け入れられます。これは、PHP_FCGI_MAX_REQUESTS 環境変数と同等です。
以上がphp-fpm静的動的の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。