ホームページ >バックエンド開発 >PHPチュートリアル >php-fpmパラメータの深い理解_PHPチュートリアル
ps aux |grep php-fpm |more
php-fpmの合計数を表示
php-fpm.conf設定
pid文字列
PIDファイルの場所。デフォルトは空です。
error_log文字列
の場所。エラー ログ。デフォルト: インストール パス #INSTALL_PREFIX#/log/php-fpm.log.
log_level string
エラー レベル: アラート (即時に処理する必要がある)、エラー (エラー状況)、警告 (警告状況)。 、notice (一般的な重要な情報)、debug (デバッグ情報)。デフォルト: Notice.
emergency_restart_threshold int
emergency_restart_interval で設定された時間内に、子プロセスがこのパラメータで設定された数の SIGSEGV または SIGBUS 終了メッセージを受信すると、FPM が再起動します。 0 は「この機能をオフにする」を意味します。 デフォルト値: 0 (オフ)
emergency_restart_interval は、スムーズな再起動間隔を設定するために使用されます。 使用可能な単位: s (秒)、m (分)、h (時間)、または d (日)。デフォルトの単位: s (秒)。デフォルト値: 0 (オフ)。
process_control_timeout 混合
メインプロセスの多重化信号 時間。 使用可能な単位: s (秒)、m (分)、h (時間)、または d (日) デフォルトの単位: s (秒) デフォルト値: 0.
daemonize boolean
実行する FPM を設定します。設定「いいえ」 デバッグのために FPM をフォアグラウンドで実行し続けます。 デフォルト: はい。
実行構成セクション
FPM では、複数のプロセス プールを異なる設定で実行できます。 これらの設定は、プロセス プールごとに個別に設定できます。
listen string
FastCGI リクエストを受け入れるアドレスを設定します。使用可能な形式は次のとおりです: 'ip:port'、'port'、'/path/to/unix/socket'。各プロセス プールを設定する必要があります。
listen.backlog int
listen(2) の半接続キューの長さを設定します。「-1」は無制限を意味します。デフォルト値: -1。
listen.allowed_clients 文字列
FastCGI と同等のサーバー IPV4 アドレスを設定します。 (5.2.2 以降)。各アドレスがカンマで区切られている場合、デフォルト値: any.
listen.owner string
が使用されます。 Unix ソケットを設定するための権限を表します。Linux では、多くの BSD 派生システムで読み取りおよび書き込み権限を設定する必要があります。デフォルト: 実行を許可します。ユーザーが共有しているため、権限は 0666 です。
listen.group 文字列
listen.owner を参照。
listen.mode 文字列
listen.owner. を参照。
user string
FPM プロセスを実行している Unix ユーザーを設定する必要があります。
グループ文字列
FPM プロセスがグループとして実行されている Unix ユーザー。設定されていない場合、デフォルトのユーザーのグループが使用されます。
プロセス マネージャーが子プロセスを管理する方法を設定します。
設定する必要があります。 static – 子プロセスの数は固定されています (pm.max_children)。
dynamic – 子プロセスの数は、次の構成に基づいて動的に設定されます: pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers.
pm .max_children int
子プロセスの数。pm が静的である場合は、作成されることを意味し、pm が動的である場合は、作成できる最大数を設定する必要があります。同時に処理できるリクエストの数は、Apache の mpm_prefork の MaxClients と通常の PHP FastCGI の PHP_FCGI_CHILDREN 環境変数の設定に似ています。
起動時に作成される子プロセスの数を設定します。 pm は動的に設定されます。 デフォルト値: min_spare_servers + (max_spare_servers – min_spare_servers) / 2.
pm.min_spare_servers int
pm が動的に設定されている場合にのみ使用されます。
pm。 max_spare_servers int
アイドル状態のサービス プロセスの最大数を設定します。 pm が動的に設定されている場合にのみ使用されます。 必ず設定してください。
pm.max_requests int
以前に処理されたリクエストの数を設定します。 「0」に設定すると、リクエストは常に受け入れられます。デフォルト: 0.
pm.status_path string
設定されていない場合は、ステータス ページの URL。ページにアクセスできません。デフォルト値: none。
ping.path string
FPM 監視ページの ping URL。設定されていない場合、このページは FPM が有効であるかどうかの外部検出に使用されます。リクエストに応答します。
ping.response 文字列
は、HTTP 200 のテキスト/プレーン形式のテキストとして返されます。スラッシュ (/) で始まる必要があることに注意してください。 pong
request_terminate_timeoutmixed
このオプションは、php.ini 設定の「max_execution_time」が何らかの特別な理由で実行中のスクリプトを終了しない場合に便利です。オフ'。使用可能な単位: s(秒)(デフォルト)、m(分)、h(時間)、または d(日数)。デフォルト値: 0.
request_slowlog_timeout 混合
リクエストがタイムアウト期間を設定する場合、対応する PHP完全な呼び出しスタック情報は、「オフ」の場合は「0」に設定されます。 使用可能な単位: s (秒) (デフォルト)、m (分)、または d (日)。 : 0.
slowlog string
低速リクエストのログ記録。デフォルト値: #INSTALL_PREFIX#/log/php-fpm.log.slow.
request_slowlog_timeout
スコープ: php-fpm.conf オプション
カテゴリ: 便利
このオプションにより、低速の追跡が可能になります。スクリプトを作成し、コールスタックとともにログファイルに記録します。たとえば、次の設定:
記録されたslow.logは、次のようになります:
コードをコピーします
A: はい。 php-fpm のアーキテクチャは、高速オペコード キャッシュのためにあらゆる種類の共有メモリで動作します。唯一の制限は、異なる uid/gid で実行されている場合でも、すべてのワーカー プロセスに適用できるキャッシュは 1 つだけです
Q: なぜ php にパッチを適用する必要があるのですか? spawn-fcgi にはこれは必要ありません。
A: php-fpm は管理を容易にするために作成されました。パッチが適用されていない PHP ではそれができません:
PHP バイナリや拡張機能のアップグレードなど、リクエストを失うことなく PHP を正常に再起動します。
異なる uid/gid/chroot 環境でワーカープロセスを実行
負荷に基づいた動的リクエスト (TODO)
PHP リクエスト (TODO) のリアルタイム統計パフォーマンス
Q: php-fpm を実行するのに root を使用する必要があるのはなぜですか?これは安全ですか?
A: root として php-fpm を開始することは、リクエストを処理するために異なる uid/gid を持つ php を使用する予定がある場合にのみ意味があります。たとえば、共有ホスティング上のさまざまなサイトです。マスタープロセスが root として実行されている場合にのみ、異なる uid/gid を持つ子プロセスを作成できるためです。とても安全です。マスタープロセス自体はリクエストを処理しません。 いかなる状況でも、php-fpm はリクエストを root として処理しません。
Q: php-fpm は php スクリプトの処理を高速化できますか?
A: いいえ、処理速度には影響しません。ただし、いくつかの特別な機能を使用すると、特定のリクエストのパフォーマンスを向上させることができます。
Q: Web サイトを mod_php から php-fpm に移行すると、パフォーマンスは向上しますか?
A: 通常、サーバー上で利用可能な空きメモリが大量にある場合、php-fpm への移行によるパフォーマンスの向上は大きくない可能性があります。ただし、メモリが豊富でない場合でも、パフォーマンスの向上は大きく、場合によっては 300 ~ 500% に達します。これは、一般的に nginx + php-fpm が Apache + mod_php よりもメモリ使用量が少ないためである可能性があります。また、空きメモリが増えるため、VFS キャッシュはより効率的に動作します。
Q: php-fpm は将来、公式の php に含まれる予定ですか?
A: そうだといいですね。現在、php-fpm コードは GPL に基づいてライセンスされています。したがって、php-fpm のコードは php プロトコル (bsd と同様) と一致しません。これは一時的な措置です。この選択は、開発プロセスを簡素化するために行われます。適応的に子プロセスを生成するなど、コードが完全に機能すると、プロトコルは一致するものに変更されます。その後、php-fpm が PHP 開発チームに正式にリリースされ、組み込むことが推奨されます。