2016-07-24 3 views
1

상황을 먼저 설명해 드리겠습니다. 64GB RAM의 서버가 있습니다. & 40 코어 (SSD)의 코어. 나는 약 2000 명의 동시 사용자가있다Nginx 및 PHP-FPM 502 불량 게이트웨이 오류

1 주일 전, PHP 7에서 아파치를 사용하고 있었지만, 거대한 SQL 삽입은 아파치에서 Nginx, MongoDB로 이동 한 후 최대 101 %이기 때문에 때로는 80 %였다. . cpu는 대략 8 %이었다.

는 많은 시간이 502 불량 게이트웨이 응답을 반환

내 문제는 지금 Nginx에있다 , 내가 어떤 대답을 보였지만 아무것도 날 전혀 도움이되지,하지만 난 listen = 127.0.0.1:9000 ngnix에 포트 listen = /var/run/php5-fpm.sock에 FPM 소켓을 변경할 때 항상 502을 반환하고, 내가 할 수있는 문제가 무엇인지 알아 내기 위해 알아 내야합니다.

답변

0

서버가 (이 현명하게 쓰여있는 경우) 하루 응용 프로그램에 > 500 000 요청을 처리 할 강력한 충분하다.

문제는 PHP-FPM이 더 많은 요청을 처리하기 위해 더 많은 하위 프로세스를 가질 수 없기 때문입니다.

아파치에서 추가 아파치 프로세스가 자동으로 시작되었습니다.

하지만 Nginx + PHP-FPM은 이러한 상황을 어떻게 처리 할 수있는 자유를 제공합니다.

그냥 FPM 풀 conf의 변경 : /etc/php/php-fpm.d/www.conf를 (또는 당신이 사용하는 무엇이든)

는이 내용이 있는지 확인 :

pm = static 
pm.max_children = 4096 
pm.process_idle_timeout = 10s 
pm.max_requests = 32 

를 다음의 PHP FPM에게

를 다시 시작도 nginx.conf을 편집하고 만들 상단에이 필드가 있는지 확인하십시오 :

user http; 
worker_processes auto; 

events { 
    worker_connections 4096; 
    multi_accept on; 
    use epoll; 
} 



p.s. 청취 속성을 ip:port으로 변경하지 마십시오. 소켓이 더 빠르며, ip:port에 ipz 및 ip로 네트워크 연결을 생성하지만 소켓 버전에서는 .sock "file"이 열립니다.

p.s. fastcgi_buffers 및 기타 지시문을 변경하지 마십시오. 불량 게이트웨이 문제를 해결하지 못합니다. php-fpm 프로세스가 적기 때문입니다.

fastcgi_buffers 32 1024k; 
fastcgi_buffer_size 1024k; 


추신 : 내 서버에서

은 기본입니다귀하의 디스크 드라이브를하고 싶지 않아 불필요한 로깅 (nginx.conf)를 사용하지 않도록 더 IO 부하가 :

access_log off; 
error_log /var/log/nginx/error.log crit; 

당신은이 위대한에 대한

+1

감사를 사용 newrelic를 모니터링하고 서버의 네트워크, CPU, MEM 활동을 모니터링해야하는 경우 대답 : –

+0

도움이 되었습니까! 도와 드리겠습니다 (: – num8er

+1

실제로 더 많은 동시 요청을 허용하는 데 도움이됩니다 .. 그리고 laravel에서 phalcon으로 프로젝트의 특정 부분을 이동 시켰습니다. 이제는 큰 효과가 있습니다 –

-1

이 변경 작동합니다 : Nginx의 구성 파일 /etc/nginx/nginx.conf이 : 8 16K nginx.conf 파일에 HTTP 섹션에서 아래

HTTP

{

fastcgi_buffers 추가 ;

fastcgi_buffer_size 32k;

}

관련 문제