깊이 연구:Nginx 502 Bad Gateway 오류 해결 방법

4301 단어 Nginx502BadGateway
max_children=40,모든 children 은 평균 20M-30M 메모 리 를 차지 합 니 다.children 이 많 을 수록 동시에 받 아들 일 수 있 는 병발 수량 이 많 습 니 다.일반 children 의 값 은 사이트 의 최고 병발 수+변동 값 입 니 다.이 값 은 다시×메모리 사용량 은 바로 당신 이 필요 로 하 는 메모리 입 니 다.max_requests=N 은 모든 children 이 N 번 의 요청 을 받 은 후에 자신 을 죽 이 고 children 을 다시 만 드 는 것 을 말한다.PV / max_children=모든 children 이 받 는 request 횟수[기본 설정 탐색 은 PHP 프로그램 을 한 번 만 호출 합 니 다.혹시 비동기 호출 일 까요?인 터 페 이 스 는?]예 를 들 어 위의 값 은 1000 이 고 10240 이 라 고 정의 하면 fpm 는 10 일이 넘 어야 children 을 죽 이 고 재 구축 할 수 있 습 니 다.그러면 메모리 유출 이 존재 하면 프로 세 스 가 너무 많은 메모 리 를 차지 하여 방출 할 수 없 기 때문에 fpm 의 처리 능력 이 떨 어 지고 이상 한 오류 가 발생 할 수 있 습 니 다.그러나 이 값 을 너무 작 게 설정 하면 fpm 가 children 을 자주 죽 이 고 재 구축 하면 추가 비용 이 발생 할 수 있 습 니 다.가장 좋 은 최 적 화 는 당연히 당신 사이트 의 운행 상황 에 따라 끊임없이 디 버 깅 을 해서 균형 점 을 찾 는 것 입 니 다.maxchildren 은 게 으 름 을 피 우 는 방법 도 있 습 니 다.phop 이 5.3 이 라면 fpm 의 style 을 apache-like 로 설정 할 수 있 습 니 다.이 럴 때 children 의 수 는 fpm 에서 자동 으로 제어 할 수 있 습 니 다.해당 설정 매개 변 수 는 startserver:시작 프로 세 스 수량 minspare_server:최소 프로 세 스 수량 maxspare_server:서버 가 비어 있 을 때 fpm 는 자원 을 절약 하기 위해 남 은 children 을 자발적으로 죽 입 니 다.서버 가 바 쁠 때 서버 는 자동 으로 더 많은 children 을 만 듭 니 다.Nginx 502 Bad Gateway 의 의 미 는 요청 한 PHP-CGI 가 실행 되 었 다 는 것 입 니 다.그러나 어떤 이유(일반적으로 자원 을 읽 는 문제)가 실행 되 지 않 아 PHP-CGI 프로 세 스 가 종료 되 었 습 니 다.일반적으로 Nginx 502 Bad Gateway 는 pp-fpm.conf 의 설정 과 관련 이 있 습 니 다.pp-fpm.conf 는 두 가지 중요 한 매개 변수 가 있 습 니 다.하 나 는 max 입 니 다.children,다른 하 나 는 requestterminate_timeout,하지만 이 값 은 통용 되 는 것 이 아니 라 스스로 계산 해 야 합 니 다.설치 하고 사용 하 는 과정 에서 502 문제 가 발생 합 니 다.일반적으로 기본 phop-cgi 프로 세 스 가 5 개 이기 때 문 입 니 다.phopcgi 프로 세 스 가 부족 해서 502 가 발생 할 수 있 습 니 다./usr/local/phop/etc/phop-fpm.conf 를 수정 해 야 합 니 다.children 치가 적당히 증가 합 니 다.계산 방식 은 다음 과 같 습 니 다.서버 성능 이 충분 하고 광대 역 자원 이 충분 하 며 PHP 스 크 립 트 가 순환 되 지 않 거나 BUG 가 없 으 면 requestterminate_timeout 을 0 s 로 설정 합 니 다.○s 는 시간 제한 없 이 PHP-CGI 를 계속 실행 하 라 는 뜻 이다.만약 당신 이 이 점 을 하지 못 한다 면,즉 당신 의 PHP-CGI 에 어떤 버그 가 나타 날 수 있 거나,당신 의 광대 역 이 충분 하지 않 거나,다른 원인 으로 인해 당신 의 PHP-CGI 가 가사 할 수 있다 면,request 에 게terminate_timeout 에 값 을 부여 합 니 다.이 값 은 서버 의 성능 에 따라 설정 할 수 있 습 니 다.일반적으로 성능 이 좋 을 수록 설정 할 수 있 습 니 다.20 분-30 분 이면 됩 니 다.그리고 maxchildren 이라는 값 은 또 어떻게 계산 해 냈 습 니까?이 값 은 원칙적으로 클 수록 좋 습 니 다.pp-cgi 의 프로 세 스 가 많 으 면 빨리 처리 되 고 줄 을 서 는 요청 이 적 습 니 다.max 설정children 도 서버 의 성능 에 따라 설정 해 야 합 니 다.일반적으로 한 대의 서버 가 정상 적 인 상황 에서 모든 phop-cgi 가 소모 하 는 메모리 가 20m 정도 입 니 다.공식 답 에 따라 관련 가능성 을 조사 하고 네티즌 들 의 답 을 결합 해 다음 과 같은 해결책 을 얻 었 다.1.phop fastcgi 의 프로 세 스 수 보기(maxchildren 값)코드:netstat-anpo|grep"phop-cgi"|wc-l5(5 표시 시)2,현재 프로 세 스 코드 보기:top 은 fastcgi 프로 세 스 수 를 관찰 합 니 다.사용 하 는 프로 세 스 수가 5 개 이상 이면 추가(기계 의 실제 상황 에 따라 정 함)3,조정/usr/local/phop/etc/phop-fpm.conf 의 관련 설정655004,\vi/etc/sysctl.conf 아래쪽 에 fs.file-max=65500 을 추가 하여 이상 의 수정 을 거 쳐 PHP 를 다시 시작 합 니 다./usr/local/webserver/phop/sbin/phop-fpm restart 는 ulimit-n 이 유효 하 는 지 확인 하고 있 습 니 다.그렇지 않 으 면 서버 나/etc/sysctl.conf,/etc/security/limits.conf 를 다시 시작 합 니 다.모든 운행 이 정상이다.

좋은 웹페이지 즐겨찾기