目次
max_requests パラメータの不適切な設定
max_requests パラメータの不適切な設定により、断続的な 502 エラーが発生する可能性があります:
php-fpm のスロー ログ、デバッグ、例外のトラブルシューティング アーティファクト
ホームページ バックエンド開発 PHP7 PHP7 の php.ini、php-fpm、www.conf 設定の詳細な説明

PHP7 の php.ini、php-fpm、www.conf 設定の詳細な説明

Jun 18, 2020 pm 05:00 PM
php

PHP7 の php.ini、php-fpm、www.conf 設定の詳細な説明

#php.ini は、PHP を実行するためのコア構成ファイルです。一般的な構成の一部を次に示します。

extension_dir=""

    PHP 拡張ライブラリのパスを設定します

expose_php = Off

    PHP 情報が http ヘッダーで公開されるのを回避します

display_errors = Off

    PHP が mysql を呼び出すときにエラー メッセージを公開しないようにします
##log_errors = On

display_errors をオフにした後に PHP エラー ログを有効にする (パスは php-fpm.conf で構成されます)
zend_extension=opcache.so extension=mysqli.so extension= pdo_mysql.so

PHP の opcache と mysql ダイナミック ライブラリを設定します
date.timezone = PRC

# # PHP タイムゾーンを設定します
opcache.enable=1

opcache を開きます
open_basedir = / usr/share/nginx/html;

PHP スクリプトがアクセスできるディレクトリを設定します (実際の状況に応じて設定する必要があります)
  • php-fpm.conf は php -fpm プロセス サービスの構成ファイルです。以下は一般的な構成の一部です

error_log = /usr/local/php/logs/php-fpm.log

エラー ログのパスを設定します。
include=/usr/local/php7/etc/php-fpm.d/*.conf

はじめに www.conf ファイルの設定 (デフォルトで設定)
  • php-fpm.conf と www.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] ですが、デバッグのために [no] に変更できます。 FPM では、複数のプロセス プールを異なる設定で実行できます。これらの設定は、プロセス プールごとに個別に設定できます。
listen = 127.0.0.1:9000

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

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

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

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

プロセスを開始したアカウントとグループ
php- fpm プロセス プールの最適化メソッド

pm = Dynamic

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

静的で開始された php-fpm プロセスの数動的モードでは、php-fpm のプロセスの最大数を制限します (ここで、pm.max_spare_servers の値は pm.max_children 以下のみであることに注意してください)
pm.start_servers

動的モードでの初期 php-fpm プロセスの数。
pm.min_spare_servers

アイドル プロセスの最小数を保証します。アイドル プロセスがこの値より少ない場合は、新しい子プロセスを作成します
pm.max_spare_servers

<ul> <li> アイドル プロセスの最大数を確認します。アイドル プロセスがこの値より大きい場合、クリーンアップされます。</li> <li>dm が static に設定されている場合、pm.max_children パラメーターのみが削除されます。有効になります。システムはパラメータで設定された数の php-fpm プロセスを開きます。 php-fpm プロセスはおそらく 20m ~ 40m のメモリを占有するため、その数値サイズ設定は物理メモリのサイズに応じて設定する必要があります。また、データベースやシステム プロセスなどの他のメモリ占有にも注意を払う必要があります。 、上記4つのパラメータの設定値を決定します! </li> <li>dm が動的に設定されている場合、4 つのパラメータすべてが有効になります。 php-fpm の実行が開始されると、システムは pm.start_servers php-fpm プロセスを開始し、システムのニーズに応じて pm.min_spare_servers と pm.max_spare_servers の間で php-fpm プロセスの数を動的に調整します。このパラメーターでは、pm.start_servers の値が pm.min_spare_servers と pm.max_spare_servers の間にある必要があります。 </li> </ul> <p><code>pm.max_requests = 1000

  • 各子プロセスが再起動される前に処理されるリクエストの数を設定します。
  • 最大数処理されたリクエストの数 これは、多数のリクエストを処理した後に php-fpm ワーカー プロセスが終了し、マスター プロセスが新しいプロセスを再起動することを意味します。 この構成の主な目的は、プログラムが参照する PHP インタープリターまたはサードパーティ ライブラリによって引き起こされるメモリ リークを回避することです。
  • #これは、メモリ リークがある可能性のあるサードパーティ モジュールに非常に役立ちます。「0」に設定すると、リクエストは常に受け入れられます。PHP_FCGI_MAX_REQUESTS 環境変数と同等です。デフォルト値: 0.

pm.status_path = /status

    #FPM ステータス ページの URL。設定されていない場合、ステータス ページにアクセスできません。デフォルト値: なしmunin 監視によって使用されます

ping.path = /ping

    FPM 監視ページの ping URL。設定されている場合、ping ページにアクセスできません。このページは、FPM が有効かどうか、および要求に応答できるかどうかを外部的にチェックします。スラッシュ (/) で始まる必要があることに注意してください。

ping.response = pong

    # は、ping リクエストの戻り応答を定義するために使用されます。戻り値は HTTP 200 text/plain です。フォーマットテキスト。デフォルト値: 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 制限値を設定します。使用可能な値: 'unlimited'、0 または正の整数。デフォルト値: system 値を定義します。
chroot =

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

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

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

##一般的なエラーと解決策

リクエストのタイムアウト中止時間が設定されていません
  • #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 にタイムアウト パラメーターを追加することです。

max_requests パラメータの不適切な設定

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

pm.max_requests = 1000

  • 各子プロセスが再生成される前に処理されるリクエストの数を設定します。これは、メモリ リークが発生する可能性のあるサードパーティ モジュールに非常に役立ちます。「0」に設定すると、リクエストは常に受け入れられます。 PHP_FCGI_MAX_REQUESTS 環境変数と同等、デフォルト値: 0。 この設定の意味は、PHP-CGI プロセスによって処理されるリクエストの数が 500 に累積すると、プロセスが自動的に再起動されることです。

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

  • 一般に、プロジェクトでは、多かれ少なかれ、PHP のサードパーティ ライブラリを使用します。これらのサードパーティ ライブラリには、メモリ リークの問題がよく発生します。PHP-CGI プロセスが定期的に再起動されない場合は、 , メモリ使用量が増加し続ける原因となるのは間違いありません。そこで、PHP-FPMは、PHP-CGIの管理者として、指定回数リクエストを行ったPHP-CGIプロセスを再起動し、メモリ使用量が増加しないように監視する機能を提供します。

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

    • request_slowlog_timeout はタイムアウト パラメーターを設定し、slowlog はスロー ログの保存場所を設定します。 , tail -f /var/log/www.slow.log では、実行が遅すぎる php プロセスを確認できます。 過剰なネットワーク読み取りと遅い Mysql クエリという一般的な問題が表示され、プロンプト情報に従って問題をトラブルシューティングすると、明確な方向性が得られます。

      推奨チュートリアル: 「php チュートリアル

    以上がPHP7 の php.ini、php-fpm、www.conf 設定の詳細な説明の詳細内容です。詳細については、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)

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

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

    母音を文字列にカウントする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での後期静的結合を説明します(静的::)。 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