Nginx 502 Bad Gateway は、要求された PHP-CGI が実行されたものの、何らかの理由 (通常はリソースの読み取りの問題) により実行が完了せず、その結果、 PHP-CGI プロセスの終了、一般的に言えば、Nginx 502 Bad Gateway は php-fpm.conf の設定に関連しています。
一般的な理由としては、php-cgi プロセスの数が足りない、php の実行時間が長い (mysql が遅い)、または php-cgi プロセスが停止して 502 エラーが発生するなどが考えられます。
1. インストールした環境では、一定期間実行すると 502 問題が発生しますが、これは通常、デフォルトの php-cgi プロセスが 5 であることが原因であり、phpcgi プロセスが不足していることが原因である可能性があります。 /usr/local /php/etc/php-fpm.conf を変更する必要があります。 max_children 値を適切に増やしてください。
2. PHP 実行タイムアウト。/usr/local/php/etc/php.ini を変更して、max_execution_time を 300 に変更します。
3. ディスク容量が不足しているため、# df -h を使用できます。ディスク使用量を確認するコマンド
4. php-cgi プロセスが停止しました。
通常のトラブルシューティング方法は以下のとおりです:
1. php fastcgi のプロセス数 (max_children 値) を確認します
# netstat -anop | grep php-cgi | wc -l # netstat -anpo | grep php-fpm | wc -l
は 5
2. 現在のプロセスを表示します
# ps aux | grep php-fpm 观察fastcgi/php-fpm进程数,假如使用的进程数等于或高于5个,说明需要增加。
3. /usr/local/php/etc/php-fpm.conf の関連設定を調整します
pm.max_children = 5 request_terminate_timeout = 60
max_children 最大 5 プロセス、プロセスあたり 20MB のメモリに基づき、最大 100MB。それは 1 分です。 max_children が増加すると、より多くの php-cgi プロセスが迅速に処理され、キューに入れられるリクエストが減ります。
ただし、max_children の設定もサーバーのパフォーマンスに応じて設定する必要があり、通常、サーバー上の各 php-cgi が消費するメモリは通常で約 20M です。実際の決定は、サーバー用に購入したメモリによって異なります。
request_terminate_timeout の実行時間は 60 秒ですが、request_terminate_timeout の値はサーバーのパフォーマンスに応じて設定できます。一般に、パフォーマンスが優れているほど、20 分から 30 分の範囲で高く設定できます。
4. 一部の PHP プログラムの実行時間が Nginx の待機時間を超えています。nginx.conf 設定ファイルで FastCGI タイムアウト時間を適切に増やすことができます (例:
http { ...... fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; ......}
##)。 #More Nginx 関連する技術記事については、Nginx チュートリアル 列にアクセスして学習してください。
以上がnginx 502の不正なゲートウェイ問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。