2012-05-10 6 views
13

nginx 및 php-fpm을 사용하여 임의의 502 게이트웨이 오류와 관련된 문제가 발생했습니다. 제 경우에는 다양한 php.ini error_log 설정과 error_reporting 수준이 랜덤 502 게이트웨이 오류를 일으키는 시나리오를 발견했습니다.nginx php-fpm 및 우분투가있는 임의의 502 게이트웨이 오류

php.ini 설정을 변경하면 error_reporting과 error_log가 502 게이트 웨이 오류를 사라지게 할 수 있었지만 더 중요한 것은 실제 PHP 오류가 로그에 있었는지 확인할 수있었습니다.

주요 문제에 error_logging = "error_reporting은이 고지 사항을 표시하도록 설정 한"경우 "그때의 error_log가 서버에 유효한 경로 문신에 쓰기 가능했다 설정되어 있는지 확인이 필요하다고했다.

// !!! 502 Gateway Error (unhappy server) 
error_reporting = E_ALL & E_NOTICE 
; error_log = php_errors.log (note this is commented) 

// Happy Server, no 502 gateway error 
error_reporting = E_ALL & E_NOTICE 
error_log = /valid/log/path/and/permissions 

// Happy Server, no 502 gateway error 
error_reporting = E_CORE_ERROR 
; error_log = php_errors.log (note this is commented) 

사실 실제 오류는 PHP 알림 이었지만 nigg는 설정되지 않은 속성과 관련된 PHP 알림에 대해 502 개의 게이트웨이 오류를 발생 시켰습니다.

또한 모든 PHP 알림에서 502 개의 게이트웨이 오류가 발생하지 않았습니다.

이것이 누군가에게 약간의 좌절을 저장하기를 희망한다!

+1

질문을 질문으로 다시 편집 한 다음 직접 대답해야합니다. 그런 다음 답을 수락하십시오. 그러면 대답으로 표시됩니다. 당신의 대답도 +1 할게요, 좋은 질문입니다, 고마워요. –

+1

이 질문이나 답변입니까? ;) – Strae

답변

0

iis와 php를 fastCGI 모드로 실행하는 Windows 시스템에서이 문제가 발생했습니다. 따라서 문제는 아닙니다.

범인은 PHP 로깅도합니다. 스크립트가있는 디렉토리에 적절한 권한을 부여 할 수 있으면 정적 디렉토리로 설정할 필요는 없습니다. (크고 복잡한 사이트가있는 경우 매우 유용 할 수 있습니다)

내 서버가 이렇게 설정되어 있고 오류 로그를 공개하지 않는 규칙을 추가했습니다.

요약하자면, 사용 권한을 확인하십시오! =)

3

502 Nginx의 게이트웨이 오류는 php-fpm이 충분한 프로세스 및/또는 시간 초과가 없기 때문에 발생합니다. 로깅은 문제가 무엇인지 알려주고 502 오류의 원인이되지 않습니다.

25 개의 서버에서 stunnel + haproxy + nginx + php-fpm을 사용합니다. pfp-fpm의 기본값은 보통 서버가 바쁜 경우에도 매우 낮습니다. fpm 하위 프로세스는 apache mod_php와 동일한 방식으로 구성하십시오.

pm.max_children = 250 
pm.start_servers = 20 
pm.min_spare_servers =10 
pm.max_spare_servers = 20 
pm.max_requests = 1500 

이 2 기가 바이트 램과 서버입니다 :

나는 다음과 같은 사용합니다. 502와 함께 하루에 20-30GB 트래픽을 처리합니다.

+0

이 구성 정보는 어디에서 찾을 수 있습니까? –

0

PHP 경고를 사용하지 않도록 설정하여 해결 한 비슷한 문제가 있습니다. 그러나 문제는 오류 로깅에 사용되는 버퍼의 NGINX 구성과 관련이 있습니다. 이 오류는 일정 수의 경고 메시지가 대기열에 들어간 후에 만 ​​트리거되며 매우 예측 가능하게 반복 될 수 있습니다. 어떤 설정이 포함되어 있는지 파악할 수 없으므로 깨진 설정을 해결할 수있을 때까지 경고를 종료해야합니다.

0

위의 단계를 수행해도 문제가 해결되지 않으면 eaccelerator가 활성화되어 있는지 확인하십시오.

모든 문제가 사라

eaccelerator.ini php.ini 파일 또는 php.d 중 하나의 부하 .so는 항목을/비활성화하여 전 세계적으로 그것을 사용하지 않습니다.php-fpm과 함께 특정 상황에서 accellerator가 실패한 것처럼 보입니다.

관련 문제