ホームページ  >  記事  >  運用・保守  >  nginx 502の不正なゲートウェイ問題を解決する方法

nginx 502の不正なゲートウェイ問題を解決する方法

步履不停
步履不停オリジナル
2019-06-21 10:30:5913192ブラウズ

nginx 502の不正なゲートウェイ問題を解決する方法

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 サイトの他の関連記事を参照してください。

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