이는 PHP-CGI의 연결, 전송, 읽기를 지정합니다시간, 300초면 충분해, 그러니까 내서버504는 거의 등장하지 않습니다게이트웨이타임아웃 오류. 가장 중요한 것은PHP-FPM.약속의설립하다이 과정에서 502 불량 게이트웨이와 504 게이트웨이 타임아웃이 발생하게 됩니다.
php-fpm.conf의 중요한 부분들을 좀 더 자세히 살펴보겠습니다매개 변수:
php-fpm.conf에는 두 가지 중요한 매개변수가 있는데, 하나는 "max_children"이고 다른 하나는 "request_terminate_timeout"입니다.
저는 "40"과 "900" 두 가지 설정을 가지고 있지만, 이 값은 보편적인 것은 아니고 제가 직접 계산해야 합니다.
계산 방법은 다음과 같습니다:
만약 당신의 것이라면운용악기공연충분히 좋고, 광대역 자원도 충분합니다. PHP스크립트루프나 버그가 없다면 "request_terminate_timeout"을 0으로 설정하면 됩니다. 0은 PHP-CGI가 시간 제한 없이 항상 실행된다는 의미입니다. 만약 이 방법이 없다면, 즉 PHP-CGI에 버그가 있거나 대역폭이 부족하거나 다른 이유로 인해 PHP-CGI가 가짜 사망할 수 있다면, 서버 성능에 따라 설정할 수 있는 값을 "request_terminate_timeout"에 할당하는 것이 좋습니다. 일반적으로 성능이 좋을수록 설정할 수 있는 온도가 높으며, 20분에서 30분 정도면 충분합니다. 서버 PHP 스크립트는 실행이 오래 걸려서 어떤 스크립트는 10분 이상 걸릴 수 있어서, PHP-CGI가 죽거나 502 Bad Gateway 오류가 발생하지 않도록 900초로 설정했습니다.
"max_children"의 가치는 어떻게 계산되나요? 원칙적으로, 크기가 클수록 좋습니다, php-cgi과정더 많으면 빠르게 처리되어 대기열에 요청이 적을 것입니다. max_children 일반적으로 서버는 php-cgi당 약 20M의 메모리를 사용하므로 저는 "max_children"을 40, 즉 20M*40=800M으로 설정했습니다. 이는 모든 PHP-CGI가 피크 타임에 800M 미만을 소비한다는 뜻으로, 제 유효 메모리인 1Gb보다 적습니다. 그리고 만약 제 'max_children'을 5-10처럼 작게 설정하면 php-cgi는 '매우 피곤하고', 처리 속도도 매우 느리며, 대기 시간도 길어집니다. 요청이 오랜 시간 처리되지 않으면 504 게이트웨이 타임아웃 오류가 발생하고, 처리 중인 php-cgi는 문제가 발생하면 502 Bad Gateway 오류를 겪게 됩니다.
|