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

php設定php-fpm起動パラメータとconfiguration_PHPチュートリアルの詳細な説明

Jul 13, 2016 am 10:25 AM
php php-fpm

複数のディレクトリに同意する

/usr/local/php/sbin/php-fpm
/usr/local/php/etc/php-fpm.conf
/usr/local/php/etc/php.ini
まず、php-fpmパラメータを起動します

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

#php-fpm構成をテストします
/usr/local/php/sbin/php-fpm -t
/usr/local/php/sbin/php -fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t

#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

#閉じる php -fpm
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

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

2番目、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
#値セット内で SIGSEGV または SIGBUS エラーがある php-cgi プロセスの数を示します。 Emergency_restart_interval によって、emergency_restart_threshold を超えた場合、php -fpm は正常に再起動します。これら 2 つのオプションは通常、デフォルト値のままです。

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

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

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

listen.backlog = -1
#バックログ番号、-1 はなしを意味します。制限はオペレーティング システムによって決定されるため、この行をコメントアウトするだけです。バックログの意味参照: http://www.3gyou.cc/?p=41

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

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

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

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.

pm.status_path = /status
#FPM ステータス ページの URL が設定されていない場合、Munin モニタリングは ping URL を使用します。

ping.path = /ping
#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 または正の整数: 起動時にシステム定義の値。 to は絶対パスです。設定されていない場合、chroot は使用されません。

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

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


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 スクリプトの最大実行時間を設定するにはこのパラメータを変更する必要がありますが、根本的な原因ではなく症状を治療するだけです。たとえば、これを 30 秒に変更すると、file_get_contents() が Web ページのコンテンツを取得するのが遅い場合、これは 150 の php-cgi プロセスが 1 秒あたり 5 つのリクエストしか処理できないことを意味し、Web サーバーが「502 Bad」を回避することも困難になります。ゲートウェイ"。解決策は、request_terminate_timeout を 10 秒または適切な値に設定するか、file_get_contents にタイムアウト パラメーターを追加することです。

コードをコピーします コードは次のとおりです:

$ctx = stream_context_create(array(
'http' => array(
'timeout' => 10 //タイムアウトを秒単位で設定します
)
); .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 はスロー ログの保存場所を設定します


コードをコピーします
コードは次のとおりです:


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

上記のコマンドは、実行が遅すぎるphpプロセスを確認できます。
プロンプト情報に従って問題をトラブルシューティングすると、過剰なネットワーク読み取りと遅い MySQL クエリという一般的な問題がわかります。

http://www.bkjia.com/PHPjc/825014.htmlwww.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/825014.html

技術記事
いくつかのディレクトリについて合意します /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php.ini 1. php-fpmの起動パラメータ次のようにコードをコピーします: #Test php-fpm 構成...

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles