検索
ホームページバックエンド開発PHPチュートリアルphp-fpm の起動パラメータと重要な設定の詳細な説明

php-fpmの起動パラメータと重要な設定の詳細な説明

いくつかのディレクトリに同意します

  • /usr/local/php/sbin/php-fpm
  • /usr/local/php/etc/php-fpm.conf
  • /usr/local/php/etc/php.ini

1、php-fpm

1

2

3

4

5

6

7

8

9

10

11

12

13

#php-fpm 構成をテストする #测试php-fpm配置

/usr/local/php/sbin/php-fpm -t

/usr/local/php/sbin/php-fpm/usr/local/php/etc/php/usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm /usr /local/php/sbin/php-fpm

-c

#启动php-fpm

/usr/local/php/sbin/php-fpm

/usr/local/php/sbin/php-fpm/usr/local/php/etc/php.ini -y /usr/local/php/etc/php/usr/local/php/etc/php-fpm.conf -t/usr/local/php/etc/php-fpm.conf

#关闭php-fpm

killcat /usr/local/php/var/run/php-fpm.pid`

#重启php-fpm

🎜🎜/usr/local/php/sbin/php-fpm🎜🎜🎜🎜/usr/local/php/sbin/php-fpm🎜🎜-cを起動します。 🎜🎜/usr/local/php/etc/php🎜.ini -y 🎜🎜/usr/local/php/etc/php-fpm🎜🎜.conf🎜🎜🎜#Close php-fpm🎜🎜🎜kill🎜 🎜-INT `🎜cat🎜 🎜/ usr/local/php/var/run/php-fpm🎜🎜.pid`🎜🎜🎜#restartphp-fpm🎜🎜

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

/usr/local/php/var/run/php-fpm.pid`
🎜🎜🎜🎜

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

1

2

3

4

5

6

7

8

9

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

7 2

73

74

75

76

77

78

79

pid = run

/php-fpm

.pid

#pid設定、デフォルトはインストールディレクトリのvar/run/php-fpm.pidです、オンにすることをお勧めします

error_log = log

/php-fpm

.log

#エラーログ、デフォルトはインストールディレクトリのvar/log/php-fpm.logです

log_level = 注意/php-fpm.pid

#pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启

#エラーレベル。 利用可能なレベル: アラート (直ちに対処する必要がある)、エラー (エラー状況)、警告 (警告状況)、通知 (一般的な重要な情報)、デバッグ (デバッグ情報) デフォルト: Notice./php-fpm.log

#错误日志,默认在安装目录中的var/log/php-fpm.log

emergency_restart_threshold = 60

緊急再起動間隔 = 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 =

はい

#fpm をバックグラウンドで実行します。デフォルト値は、デバッグのために no に変更できます。 FPM では、複数のプロセス プールを異なる設定で実行できます。 これらの設定は、プロセス プールごとに個別に設定できます。

聞いてください = 127.0.0.1:9000

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

listen.backlog = -1

#backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。backlog含义参考:http://www.3gyou.cc/?p=41#バックログ番号、-1 は無制限を意味し、オペレーティング システムによって決定されます。この行をコメントアウトするだけです。バックログの意味参照: http://www.3gyou.cc/?p=41

listen.allowed_clients = 127.0.0.1

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

listen.owner = www

listen.group = www

listen.mode = 0666

#unix ソケット設定オプション。TCP モードを使用してアクセスする場合は、ここにコメントしてください。

ユーザー = www

グループ = www

#启动进程的帐户和组

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

#对于专用服务器,pm可以设置为static。

#如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则由下开参数决定:pm = 動的

#専用サーバーの場合、pm を静的に設定できます。 #,子进程最大数

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

#,启动时的进程数pm.max_children

🎜#、子プロセスの最大数🎜🎜🎜🎜pm.start_servers 🎜🎜#、起動時のプロセス数🎜🎜

pm.min_spare_servers #,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程#、アイドルプロセスの最小数を保証します。アイドルプロセスがこの値より少ない場合は、新しい子プロセスを作成します

pm.max_spare_servers #,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理

#、アイドルプロセスの最大数を保証します。アイドルプロセスがこの値より大きい場合、これはクリーンアップされます

pm.max_requests = 1000

#各子プロセスが再生成される前に処理されるリクエストの数を設定します。 「0」に設定すると、リクエストは常に受け入れられます。デフォルト値: 0.

/status。 =

/status

#FPM ステータス ページの URL。 設定されていない場合、ステータス ページにアクセスできません。munin モニタリングでは pingping/ping

.パス =

/ping

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

ping

。応答 = 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

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

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

chdir =

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

catch_workers_output = はい

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

3 つの一般的なエラーと解決策

1. request_terminate_timeout によって引き起こされるリソースの問題

request_terminate_timeout の値が 0 または長すぎるように設定されている場合、file_get_contents でリソースの問題が発生する可能性があります。

file_get_contents によって要求されたリモート リソースの応答が遅すぎる場合、file_get_contents はタイムアウトせずに常にそこでスタックします。 php.ini の max_execution_time で PHP スクリプトの最大実行時間を設定できることはわかっていますが、php-cgi (php-fpm) ではこのパラメータは有効になりません。 PHP スクリプトの最大実行時間を実際に制御できるのは、php-fpm.conf 設定ファイルの request_terminate_timeout パラメータです。

request_terminate_timeout のデフォルト値は 0 秒です。これは、PHP スクリプトが実行を継続することを意味します。このように、すべての php-cgi プロセスが file_get_contents() 関数でスタックすると、この Nginx+PHP Web サーバーは新しい PHP リクエストを処理できなくなり、Nginx はユーザーに「502 Bad Gateway」を返します。 PHP スクリプトの最大実行時間を設定するにはこのパラメータを変更する必要がありますが、根本的な原因ではなく症状を治療するだけです。たとえば、file_get_contents() が発生した場合は 30 秒に変更します。 Web ページのコンテンツの取得が遅い場合、150 の php-cgi プロセスが 1 秒あたり 5 つのリクエストしか処理できないことを意味し、Web サーバーが「502 Bad Gateway」を回避することも困難になります。解決策は、request_terminate_timeout を 10 秒または適切な値に設定するか、file_get_contents にタイムアウト パラメーターを追加することです。

1

2

3

4

5

6

7

$ctx= stream_context_create(arrayarray(

    'http' (array(

        'timeout' //设置一个超时时间,单位为秒

    )

));'http'

🎜 => 🎜array🎜🎜(🎜) 🎜🎜🎜 🎜file_get_contents($str、 0, $ctx););

2、max_requests パラメータの設定が不適切であると、断続的な 502 エラーが発生する可能性があります:

1

pm.max_requests = 1000


各子プロセスが再起動される前に処理されるリクエストの数を設定します。これは、メモリ リークが発生する可能性があるサードパーティ モジュールに非常に役立ちます。「0」に設定すると、リクエストは常に処理されます。 PHP_FCGI_MAX_REQUESTS 環境変数と同等です。デフォルト値: 0。

この設定は、PHP-CGI プロセスによって処理されるリクエストの数が 500 に達すると、プロセスが自動的に再起動されることを意味します。

しかし、なぜプロセスを再起動するのでしょうか?

一般に、プロジェクトでは、PHP のサードパーティ ライブラリをある程度使用します。これらのサードパーティ ライブラリには、PHP-CGI プロセスが定期的に再起動されないと、必然的にメモリ使用量が増加します。そこで、PHP-FPMは、PHP-CGIの管理者として、指定回数リクエストを行ったPHP-CGIプロセスを再起動し、メモリ使用量が増加しないように監視する機能を提供します。

同時実行性の高いサイトで 502 エラーが頻繁に発生するのは、まさにこの仕組みのため、PHP-FPM が NGINX からのリクエストキューをうまく処理していないことが原因だと思われます。ただし、私はまだ PHP 5.3.2 を使用していますが、この問題が PHP 5.3.3 でも存在するかどうかはわかりません。

私たちの現在の解決策は、この値をできるだけ大きく設定して、PHP-CGI の再 SPAWN の回数をできる限り減らし、同時に全体的なパフォーマンスを向上させることです。実際の運用環境では、メモリ リークが明らかではないことが判明したため、この値を非常に大きな値 (204800) に設定しました。誰もが実際の状況に応じてこの値を設定する必要があり、やみくもに増やすことはできません。

そうは言っても、このメカニズムの目的は、PHP-CGI が過剰なメモリを占有しないようにすることだけです。メモリを検出して対処してみてはいかがでしょうか。 Gao Chunhui 氏の意見に非常に同意します。プロセスの固有使用量のピークを設定して PHP-CGI プロセスを再起動することが、より良い解決策となるでしょう。

3、php-fpmのスローログ、デバッグ、および例外のトラブルシューティングアーティファクト:

request_slowlog_timeoutはタイムアウトパラメータを設定し、slowlogはスローログの保存場所を設定します

1

tail tail -f /var/log/www.slow.log

/var/log/www.slow.log
🎜🎜🎜🎜

上記では、php-fpm の起動パラメータと重要な設定の詳細な説明を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの現在のステータス:Web開発動向を見てくださいPHPの現在のステータス:Web開発動向を見てくださいApr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較PHP対その他の言語:比較Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能PHP対Python:コア機能と機能Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHP:Web開発の重要な言語PHP:Web開発の重要な言語Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP:多くのウェブサイトの基礎PHP:多くのウェブサイトの基礎Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

See all articles

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。