ホームページ >バックエンド開発 >PHPチュートリアル >php-fpmパラメータの深い理解_PHPチュートリアル

php-fpmパラメータの深い理解_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:09:45772ブラウズ

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 オプション
カテゴリ: 便利
このオプションにより、低速の追跡が可能になります。スクリプトを作成し、コールスタックとともにログファイルに記録します。たとえば、次の設定:
5s
logs/slow.log
記録されたslow.logは、次のようになります:



コードをコピーします

コードは次のとおりです:

Sep 21 16:22:19.399162 pid 29715 (プールのデフォルト)
script_filename = /local/www/stable/www/catalogue.php
[0x00007fff23618120] mysql_query() /srv/stable/common/Database/class.MySQLRequest。 php:20
[0x00007fff23618560] getResult() /srv/stable/common/Database/class.Facade.php:106
[0x00007fff23618aa0] query() /srv/stable/common/mysite.com/ORM/class.UsersMapper。 php:99
[0x00007fff23618d60]solveByID() /srv/stable/common/mysite.com/ORM/class.User.php:629
[0x00007fff236193b0] getData() /srv/stable/common/class.DataEntity.php: 90
[0x00007fff236195d0] load() /srv/stable/common/mysite.com/ORM/class.User.php:587
[0x00007fff23619a00] getIsHidden() /srv/stable/common/mysite.com/class.User. php:42
[0x00007fff2361a470] getName() /local/www/stable/www/catalogue.php:41

同時に、次のレコードが error.log に保存されます:
Sep 21 16:22:19.399031 [警告] fpm_request_check_timed_out()、135 行目: child 29715、script '/local/www/stable/www/ catalogue.php ' (プールのデフォルト) 実行が遅すぎます (5.018002 秒)、ログ記録
例でわかるように、スクリプトは 5 秒以上実行されており、おそらく mysql の応答が遅いことが原因でした (トップのバックトレース) 。
rlimit_files int
ファイル オープン記述子の rlimit 制限を設定します。
rlimit_core int
コアの rlimit の最大制限値を設定します。 使用可能な値: 'unlimited'、0 または正の整数。
chroot 文字列
起動時の Chroot ディレクトリ。設定されていない場合、chroot 文字列
が自動的にこのディレクトリに設定されます。定義されたディレクトリは絶対パスである必要があります。デフォルト値: 現在のディレクトリ、または / ディレクトリ (chroot 時)
実行中のプロセス中の stdout と stderr をメインのエラー ログ ファイルにリダイレクトします。 stdout と stderr は、FastCGI ルールに基づいて /dev/null にリダイレクトされます。 デフォルト: 空 ランタイム プールに追加の環境変数を渡すことも、php-fpm.conf に次の値を追加することもできます。これを行うには、次の構成パラメーターを使用します。
例 #1 環境変数をランタイム プールに渡し、PHP 構成値を設定します
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/ usr/bin: /bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@ my.domain.com
php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/fpm-php.www.log
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 32M
PHP 設定値が設定されていますphp_value または php_flag を使用すると、以前の値が上書きされます。php.ini の disable_functions または disable_classes で定義された値は上書きされませんが、新しい設定は元の値に追加されます。
php_admin_value で定義された値を使用します。または php_admin_flag は PHP コードの ini_set() でオーバーライドできません
FAQ

Q: php-fpm は ZendOptimize で使用できますか?

A: もちろんです。 Q: php-fpm は ZendPlatform、xcache、eAccelerator、APC などのオプティマイザーと一緒に使用できますか?

A: はい。 php-fpm のアーキテクチャは、高速オペコード キャッシュのためにあらゆる種類の共有メモリで動作します。唯一の制限は、異なる uid/gid で実行されている場合でも、すべてのワーカー プロセスに適用できるキャッシュは 1 つだけです
Q: なぜ php にパッチを適用する必要があるのですか? spawn-fcgi にはこれは必要ありません。

A: php-fpm は管理を容易にするために作成されました。パッチが適用されていない PHP ではそれができません: PHP バイナリや拡張機能のアップグレードなど、リクエストを失うことなく PHP を正常に再起動します。
異なる uid/gid/chroot 環境でワーカープロセスを実行

すべての設定に含まれる構成ファイルは 1 つだけ

負荷に基づいた動的リクエスト (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 開発チームに正式にリリースされ、組み込むことが推奨されます。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327199.html技術記事 ps aux |grep php-fpm |more php-fpm の合計数を表示します。 php-fpm.conf PID ファイルの場所を設定します。 error_log 文字列 デフォルトは、エラー ログの場所です。 #インスタ…
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。