ホームページ  >  記事  >  バックエンド開発  >  php-fpmのチューニング方法を詳しく解説

php-fpmのチューニング方法を詳しく解説

WBOY
WBOYオリジナル
2023-07-08 16:31:372871ブラウズ

PHP-FPM は、PHP のパフォーマンスと安定性を向上させるために一般的に使用される PHP プロセス マネージャーです。ただし、高負荷環境では、PHP-FPM のデフォルト設定ではニーズを満たせない場合があるため、チューニングが必要です。この記事では、PHP-FPM のチューニング方法を詳しく紹介し、いくつかのコード例を示します。

1. プロセスの数を増やす

デフォルトでは、PHP-FPM はリクエストを処理するために少数のプロセスのみを開始します。高負荷環境ではプロセス数を増やすことでPHP-FPMの同時処理能力を向上させることができます。プロセス数はphp-fpm.confファイルを編集することで設定できます。

vi /etc/php-fpm.conf

次の 2 つのパラメータを見つけて、その値を適切な値に調整します。

pm.max_children = 50
pm.start_servers = 20

そのうち、pm.max_children はプロセスの最大数を表し、pm.start_servers はプロセスの数を表します。起動時のプロセスです。

2. プロセスのアイドル時間を調整する

デフォルトでは、PHP-FPM プロセスは一定期間アイドル状態を維持した後、シャットダウンして、頻繁に起動およびシャットダウンするコストを削減します。プロセス。ただし、高負荷環境では、プロセスのアイドル時間を短縮して、PHP-FPM の処理能力を向上させることができます。

pm.max_spare_servers = 10
pm.min_spare_servers = 5

このうち、pm.max_spare_servers はアイドル状態のプロセスの最大数を表し、pm.min_spare_servers はアイドル状態のプロセスの最小数を表します。

3. プロセスのリクエスト処理能力を向上させる

PHP-FPM プロセスは複数のリクエストを同時に処理できます。これは、次のパラメータを設定することで実現できます:

pm.max_requests = 1000

このパラメータは、各プロセスが処理できるリクエストの最大数を示します。この数に達すると、プロセスがシャットダウンされ、再起動されてリソースが解放されます。

4. 動的プロセス管理モードを使用する

PHP-FPM はデフォルトで静的プロセス管理モードを使用します。つまり、起動時に固定数のプロセスが作成されます。高負荷環境では、動的プロセス管理モードを使用して、PHP-FPM がリクエストの数に応じてプロセスを動的に作成および破棄できるようにすることで、パフォーマンスとリソースの使用率を向上させることができます。

pm = dynamic
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 10

5. PHP 構成の最適化

PHP-FPM の関連パラメーターの調整に加えて、PHP の一部の構成を最適化してパフォーマンスをさらに向上させることもできます。一般的な最適化項目の一部を次に示します。

  1. PHP キャッシュのサイズを増やす:
opcache.memory_consumption = 256
  1. PHP スクリプト解析のキャッシュ サイズを増やす:
max_execution_time = 30
  1. PHP メモリ管理の最適化:
memory_limit = 128M
  1. PHP FastCGI バッファリングの有効化:
fastcgi_buffers 8 16k;
fastcgi_buffer_size 32k;

上記は一般的な最適化の一部にすぎませんサーバーやアプリケーションが異なれば、チューニング戦略も異なる場合があります。最適化する前に、まずサーバーの負荷とアプリケーションのパフォーマンス特性を理解し、具体的なチューニング計画を決定することをお勧めします。

概要

PHP-FPM をチューニングすることで、PHP のパフォーマンスと安定性が向上し、高負荷環境におけるサーバーの負荷圧力を効果的に軽減できます。この記事では、いくつかの一般的なチューニング方法を紹介し、コード例を示します。お役に立てれば幸いです。

以上がphp-fpmのチューニング方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。