Nginx 502 게이트웨이 오류

Nginx 502 게이트웨이 오류

웹사이트를 열면 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 게이트웨이 시간 초과 문제가 다시 발생하고 웹 사이트가 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 계산

예를 들어, 클라우드 서버에 4GB RAM이 있고 최소 1GB를 소비하는 MySQL 데이터베이스 서비스를 실행 중인 경우 최적의 목표는 4 - 1 - 0,5(마지)GB = 2,5GB RAM을 얻는 것입니다. 2560MB.

pm.max_children은 2560Mb / 60Mb = 42 max_children이 됩니다.

이 작업을 한 지 8개월이 지났는데도 502 게이트웨이 오류가 발생하지 않았으며, 저희 코드도 확인해 본 결과 다른 개발자의 중요한 프로세스 코드가 많은 리소스를 소모하고 있어 여전히 백엔드 코드에 문제가 있는 것으로 나타났습니다. 역시 이렇습니다.

이 게시물은 오래되었지만 이 문제를 어떻게 해결했는지 공유하고 싶었습니다. :디

이것은 내 참조입니다. NGinx에서 PHP-FPM에 대한 올바른 하위 프로세스 수 결정

관련 정보