Nginx 502 Gateway inválido

2

Quando abro meu site, recebo um erro de gateway 502 incorreto. Depois de olhar o arquivo de log de erros em /var/log/nginx/error.log , ele menciona que "conexão encerrada prematuramente de saída durante a leitura do cabeçalho de resposta do upstream".

nginx.conf conteúdo do arquivo:

#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;

Como resolver isso?

    
por user3422709 25.03.2014 / 12:58

1 resposta

1

Eu tive o mesmo problema, mas devido à ascensão do público em nosso site, no começo eu fiz todas as sugestões que eu posso encontrar aqui " Como corrigir o tempo limite do gateway? " e outros sites e aqui em SO, e ainda tinha o mesmo problema de 502 erro de gateway. Então eu peguei a questão de que o servidor que eu estava trabalhando tinha um website e um apiend no mesmo servidor, então eu transferi o apiend para outro servidor que funcionou muito bem, até que recebemos muito mais solicitações, pois nossos clientes tinham cada vez mais eventos e problema de tempo limite do gateway 502 voltaram, o apiend ainda está respondendo enquanto o site está no 502.

Então eu tentei verificar todos os meus logs do servidor, até que eu verifiquei o meu php-fpm.log e vi esses erros:

[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)

Como foi dito no meu php-fpm.log eu preciso aumentar a configuração max_children, no meu /etc/php5/fpm/pool.d/www.conf minha configuração atual é:

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

Usando este comando: ps -ylC php5-fpm --sort:rss i verifiquei o uso médio de memória em kilobytes por processo de php-fpm e, em seguida, calcule para o pm.max_children.

Calculando pm.max_children

Um exemplo: se o nosso servidor de nuvem tiver 4 GB de RAM e um serviço de banco de dados MySQL estiver em execução e consumir pelo menos 1 GB, nosso melhor objetivo é obter 4 - 1 - 0,5 (marge) GB = 2,5 GB de RAM ou 2560 Mb.

pm.max_children nos leva a 2560 Mb / 60 Mb = 42 max_children

Depois de fazer isso, faz 8 meses que não encontrei o erro de gateway 502 e também verificamos nossos códigos e descobrimos que outros códigos de desenvolvedores que eram processos críticos estavam consumindo muitos recursos, então ainda fizemos melhoria nos códigos de backend também.

Mesmo que essa postagem seja antiga, eu só queria compartilhar como resolvi o problema. : D

Aqui está minha referência. Determinando o número correto de processos filhos para o PHP-FPM no NGinx

    
por 11.06.2016 / 20:19

Tags