目次
興味があるかもしれない記事:
ホームページ バックエンド開発 PHPチュートリアル php-fpm パラメータ設定の概要と Linux でのパラメータ最適化の詳細な説明

php-fpm パラメータ設定の概要と Linux でのパラメータ最適化の詳細な説明

Jul 07, 2018 pm 05:53 PM

この記事では主に、Linux における php-fpm のいくつかの重要なパラメータの中国語の詳細な説明を説明し、パフォーマンスに関する php-fpm のパラメータの最適化について詳しく紹介します

php-fpm重要な .conf パラメータの詳細説明

pid = run/php-fpm.pid
#pid 設定。デフォルトは var/run/php です。インストール ディレクトリ -fpm.pid では、

error_log = log/php-fpm.log
# エラー ログ (var/log/php-fpm) を有効にすることをお勧めします。 .log はデフォルトでインストール ディレクトリに保存されます。

log_level = Notice
#エラー レベル。利用可能なレベルは次のとおりです: アラート (直ちに処理する必要がある)、エラー (エラー状況)、警告(警告状況)、通知 (一般的な重要情報) )、デバッグ (デバッグ情報) デフォルト: Notice.

emergency_restart_threshold = 60
emergency_restart_interval = 60s

# は、次のことを意味します。 Emergency_restart_interval で設定された値内で SIGSEGV または SIGBUS エラーが発生した場合 php-cgi プロセスの数がEmergency_restart_threshold を超えた場合、php-fpm は正常に再起動します。これら 2 つのオプションは通常、デフォルト値のままです。

process_control_timeout = 0
#メイン プロセスの多重化信号を受け入れるための子プロセスのタイムアウトを設定します。使用可能な単位: s (秒)、m (分)、h (時間) )、または d (日) デフォルトの単位: s (秒) デフォルト値: 0.

daemonize = yes
#fpm をバックグラウンドで実行します、デフォルト値は yes ですデバッグ用の場合は、「いいえ」に変更できます。 FPM では、複数のプロセス プールを異なる設定で実行できます。これらの設定は、プロセス プールごとに個別に設定できます。

listen = 127.0.0.1:9000
#fpm リスニング ポート、これは nginx の php によって処理されるアドレスです。通常、デフォルト値で十分です。使用可能な形式は次のとおりです: 'ip:port'、'port'、'/path/to/unix/socket' 各プロセス プールを設定する必要があります。

listen.backlog = -1
#バックログの数 (-1 は制限がないことを意味します) はオペレーティング システムによって決定されます。この行をコメントアウトするだけです。

listen.allowed_clients = 127.0.0.1
#FastCGI プロセスの IP へのアクセスを許可します。任意の IP を無制限の IP に設定します。他のホストの nginx も同様に設定したい場合は、この FPM プロセスにアクセスし、listen をアクセス可能なローカル IP に設定する必要があります。デフォルト値は任意です。各アドレスはカンマで区切られます。設定されていないか空の場合、接続を要求するサーバーはすべて許可されます

##listen.owner = wwwlisten.group = www
listen.mode = 0666
#Unix ソケット設定オプション。TCP を使用してアクセスする場合は、ここにコメントしてください。

#user = www

group = www
#プロセスを開始したアカウントとグループ

pm = Dynamic

# 専用サーバーの場合、pm を静的に設定できます。 #子プロセスを制御する方法。オプションは静的と動的です。 static を選択した場合、固定数の子プロセスが pm.max_children によって指定されます。動的が選択されている場合、次のパラメータによって決定されます:

pm.max_children #,
子プロセスの最大数pm.start_servers
#, プロセスの数startingpm.min_spare_servers
#、アイドル プロセスの最小数を確認します。アイドル プロセスがこの値より小さい場合は、新しい子プロセス pm.max_spare_servers
を作成します。 #、アイドルプロセスの数を確認します。最大値。アイドルプロセスがこの値より大きい場合、クリーンアップされます。#pm.max_requests = 1000

#数値を設定します。各子プロセスが生まれ変わる前に処理されるリクエストの数。メモリ リークの可能性に対して、サードパーティ モジュールに非常に役立ちます。「0」に設定すると、リクエストは常に受け入れられます。PHP_FCGI_MAX_REQUESTS 環境変数と同等です。デフォルト値: 0.
pm.status_path = /status

#FPM ステータス ページの URL。設定されていない場合、ステータス ページにアクセスできません。デフォルト値: なし。Munin モニタリングでは ## が使用されます。 #ping.path = /ping

#FPM 監視ページの ping URL。設定されていない場合、ping ページにアクセスできません。このページは、FPM 監視ページの ping URL を外部から検出するために使用されます。 FPM は有効であり、リクエストに応答できます。FPM はスラッシュ (/) で始まる必要があることに注意してください。

ping.response = pong

# は、ping リクエストの戻り応答を定義するために使用されます。返されるテキスト/プレーン形式のテキストは HTTP 200 です。デフォルト値: pong.

request_terminate_timeout = 0

#単一リクエストのタイムアウト中止時間を設定します。このオプションは、php.ini 設定の「max_execution_time」によって実行が中止されないスクリプトに役立つ場合があります。特別な理由によりスクリプトが使用されません。「0」を設定すると「オフ」を意味します。502 エラーが頻繁に発生する場合は、このオプションを変更してみてください。

request_slowlog_timeout = 10s

#リクエストが設定されたタイムアウトを超えると、対応する PHP コール スタック情報がスロー ログに完全に書き込まれます。「0」に設定すると、「オフ」を意味します'

slowlog = log/$pool.log.slow
#遅いリクエストの記録ログ、request_slowlog_timeout とともに使用されます

rlimit_files = 1024
#ファイル オープン記述子の rlimit 制限を設定します。デフォルト値: デフォルトのオープン ハンドルのシステム定義値は 1024 で、これは ulimit -n を使用して表示でき、ulimit -n 2048 で変更できます。

rlimit_core = 0
#コア rlimit の最大制限値を設定します。使用可能な値: '無制限'、0 または正の整数。デフォルト値: システム定義の値。

chroot =
#起動時の chroot ディレクトリ。定義されたディレクトリは絶対パスである必要があります。設定されていない場合、chroot は使用されません。

chdir =
#起動時に自動的に Chdired される起動ディレクトリを設定します。定義されたディレクトリは絶対パスである必要があります。デフォルト値: 現在のディレクトリ、または / ディレクトリ (chroot 時)

catch_workers_output = yes
#実行中のプロセス中に stdout と stderr をメイン エラー ログ ファイルにリダイレクトします。設定されていない場合、stdout と stderr は FastCGI ルールに従って /dev/null にリダイレクトされます。デフォルト値: 空。

php-fpm パラメータ調整

pm = 動的;

どのプロセス番号管理方法が使用されるかを示します

#dynamicphp-fpm プロセスの数が pm で指定された数から動的であることを示します.start_servers. リクエストが多い場合は、アイドル状態のプロセスの数が pm.min_spare_servers 以上になるように自動的に増加します。プロセスが多い場合は、冗長プロセスの数を確保するためにそれに応じてクリーンアップされます。 pm.max_spare_servers 以下です

staticphp-fpm のプロセス数が静的であることを示しますプロセス数は最初から最後まで pm.max_children で指定された数であり、

pm.max_children = 300; 静的モードで開始された php-fpm プロセスの数
pm.start_servers = 20; 動的モードで開始される php-fpm プロセスの数
pm.min_spare_servers = 5; 動的モードでの php-fpm プロセスの最小数
pm.max_spare_servers = 35;動的モードでの php-fpm プロセスの最大数

pm が静的な場合、実際には、パラメーター pm.max_children のみが有効になります。システムは、設定された数の php-fpm プロセスを開きます。

pm が動的である場合、pm.max_children パラメーターは無効になり、次の 3 つのパラメーターが有効になります。 php-fpm の実行が開始されると、システムは pm.start_servers php-fpm プロセスを開始し、システムのニーズに応じて pm.min_spare_servers と pm.max_spare_servers の間で php-fpm プロセスの数を動的に調整します。 #それでは、私たちのサーバーではどの PM 方式が優れているのでしょうか?実際、Apache と同様、実行中の PHP プログラムでは実行後に多かれ少なかれメモリ リークが発生します。これは、php-fpm プロセスが最初は約 3M のメモリしか占有せず、一定期間実行すると 20 ~ 30M に増加する理由でもあります。

大容量メモリ (8G 以上など) を備えたサーバーの場合、静的 max_children を指定する方が実際にはより適切です。これにより、追加のプロセス数制御が必要なくなり、効率が向上します。 php-fpm プロセスを頻繁に切り替えると遅延が発生するため、メモリが十分に大きい場合は静的効果が向上します。また、メモリ/30M で数量を求めることもでき、たとえば 8GB メモリを 100 に設定すると、php-fpm で消費されるメモリを 2G ~ 3G に制御できます。メモリが 1G などわずかに小さい場合は、静的なプロセス数を指定する方がサーバーの安定性に役立ちます。これにより、php-fpm が十分なメモリのみを取得し、他のアプリケーションに少量のメモリが割り当てられて使用されるようになり、システムがよりスムーズに実行されるようになります。

メモリが 256M の VPS など、メモリが少ないサーバーの場合、20M のメモリに基づいて計算したとしても、10 個の php-cgi プロセスで 200M のメモリが消費され、システム クラッシュは非常に深刻になるはずです。深刻です。普通です。したがって、php-fpm プロセスの数をできる限り制御する必要があり、他のアプリケーションが占有しているメモリを大まかに把握した上で、静的に小さな数を割り当てるとシステムがより安定します。または、動的モードを使用します。動的モードは冗長なプロセスを終了し、一部のメモリをリサイクルして解放できるため、メモリの少ないサーバーまたは VPS で使用することをお勧めします。具体的な最大量はメモリ/20M に基づいて取得されます。たとえば、512M VPS の場合、pm.max_spare_servers を 20 に設定することをお勧めします。 pm.min_spare_servers については、サーバーの負荷に応じて 5 ~ 10 の間で設定することをお勧めします。

4G メモリを備えたサーバーでは、200 で十分です (私の 1G テスト マシンでは、64 が最適です。最良の値を取得するには、ストレス テストを使用することをお勧めします)

pm.max_requests = 10240;

nginx php-fpm 構成プロセス中の最大の問題は内部リークです: サーバーの負荷は大きくありませんが、メモリ使用量が急速に増加します。すぐにメモリを使い果たし、その後スワップ パーティションを使い始めます。システムがすぐにハングしてしまいます。実際、公式の紹介によると、php-cgi にはメモリ リークはなく、各リクエストが完了した後、php-cgi はメモリを再利用しますが、オペレーティング システムには解放しません。これにより、大量のメモリが消費されます。 php-cgi によって占有されます。

正式な解決策は、PHP_FCGI_MAX_REQUESTS の値を下げることです。php-fpm を使用している場合、対応する php-fpm.conf は max_requests です。この値は、スレッドが再起動されるまでに送信されるリクエストの数を意味します。 . , php-fpm が自動的にメモリを解放できるように、この値を適切に下げる必要があります。インターネットでほとんどの人が言うような 51200 などではありません。実際、別の値 max_children が関連付けられています。これは毎回です。 php-fpm 実際のメモリ消費量が各リクエストで使用される max_children*max_requests*memory になるようにプロセスがいくつ作成されるか これに基づいてメモリ使用量を見積もることができるため、強制終了するスクリプトを記述する必要はありません。

request_terminate_timeout = 30;

最大実行時間は php.ini (max_execution_time)

request_slowlog_timeout = 2 で設定することもできます。 スローログを有効にする
slowlog = log/$pool.log.slow; スローログパス

rlimit_files = 1024; php-fpm制限を追加ファイル記述子を開くとき

php-fpm.conf のパラメータは明確に記載されています。何度か読めば覚えられると思います。php-fpm のパフォーマンス プランについては、それを決定する必要があります。最適な構成ソリューションを入手してください

興味があるかもしれない記事:

データ移行とデータの詳細な手順Laravelへの記入

PHPクロージャによる外部変数の取得と変数のグローバルキーワード宣言の違いについての説明

## Anyproxy を使用してパブリック アカウントの記事収集の効率を向上させる詳細な説明

以上がphp-fpm パラメータ設定の概要と Linux でのパラメータ最適化の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO) PHPでのSQL注入をどのように防止しますか? (準備された声明、PDO) Apr 15, 2025 am 12:15 AM

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHP:データベースとサーバー側のロジックの処理 PHP:データベースとサーバー側のロジックの処理 Apr 15, 2025 am 12:15 AM

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPの目的:動的なWebサイトの構築 PHPの目的:動的なWebサイトの構築 Apr 15, 2025 am 12:18 AM

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

See all articles