Nginx 502ゲートウェイエラー

Nginx 502ゲートウェイエラー

Webサイトを開くと、502無効なゲートウェイエラーが発生します。エラーログファイルを調べた後、/var/log/nginx/error.log「アップストリームからレスポンスヘッダを読み込んでいる間、アップストリームは接続を早期に終了しました」と呼ばれます。

nginx.conf文書の内容:

#user  nginx;
worker_processes  1;

#error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

#pid        /var/run/nginx.pid;


events {
    worker_connections  10240;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

   #access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    client_header_timeout 600;
    client_body_timeout 600;
    send_timeout 6000;
    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;
    keepalive_timeout  36500;
    proxy_read_timeout 1250000;
    proxy_connect_timeout 1250000;
    fastcgi_read_timeout 1250000;
    #tcp_nodelay        on;

    #gzip  on;
    #gzip_disable "MSIE [1-6]\.(?!.*SV1)";


  server_tokens off;

    include /etc/nginx/conf.d/*.conf;

この問題をどのように解決しますか?

答え1

私も同じ問題がありましたが、私たちのウェブサイトの視聴者の数が増えたので、最初はここで見つけることができるすべての提案をしました。ゲートウェイタイムアウトの問題を解決するには?「そして、ここでSOの他のサイトにもまだ同じ502ゲートウェイエラーの問題がありました。したがって、私が作業しているサーバーにサイトとapiendが同じサーバーにあることを知り、apiendを別のサーバーに移動しました。サーバーが実行中です。クライアント上のイベントこれがますます多くなり、502ゲートウェイタイムアウトの問題が再び発生し、Webサイトが502状態にある間にapiendが応答を続けながら、より多くの要求を受信するまで、これはうまくいきました。

だから私はphp-fpm.logをチェックし、次のエラーが表示されるまですべてのサーバーログをチェックしてみました。

[26-Mar-2015 10:10:04] WARNING: [pool www] server reached pm.max_children setting (35), consider raising it
[26-Mar-2015 12:04:52] WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers)

私のphp-fpm.logに示すように、max_children設定を上げる必要があります/etc/php5/fpm/pool.d/www.conf。現在の設定は次のとおりです。

pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 4
pm.max_spare_servers = 8

このコマンドを使用して:ps -ylC php5-fpm --sort:rssphp-fpmのプロセスあたりの平均メモリ使用量をキロバイト単位で確認し、pm.max_childrenを計算します。

pm.max_children 計算

たとえば、クラウドサーバーに4 GBのRAMがあり、少なくとも1 GBを消費するMySQLデータベースサービスを実行している場合、最適な目標は4 - 1 - 0,5(最後)GB = 2,5 GBのRAMを取得することです。 2560MB。

pm.max_childrenは2560Mb / 60Mb = 42 max_childrenになります。

この作業をしてから8ヶ月が経っても502ゲートウェイエラーは発生せず、私たちのコードも確認してみたところ、他の開発者の重要なプロセスコードが多くのリソースを消費しており、まだバックエンドコードに問題があることがわかりました。やっぱりそうです。

この投稿は古くなっていますが、この問題をどのように解決したかを共有したいと思いました。 :D

これは私の参照です。 NGinxでPHP-FPMの正しいサブプロセス数を決定する

関連情報