Określa ona połączenie, wysyłanie i odczyt PHP-CGIGodzina, 300 sekund wystarczy, więc mójserwer504 pojawiają się rzadkoBramaBłąd timeoutu. Najważniejsze jestphp-FPM.confofZakładać, co bezpośrednio doprowadzi do 502 Bad Gateway i 504 Gateway Time-out.
Przyjrzyjmy się bliżej kilku ważnym elementom php-fpm.confparametr:
php-fpm.conf ma dwa kluczowe parametry: jeden to "max_children", a drugi to "request_terminate_timeout".
Mam dwa ustawienia z wartościami "40" i "900", ale ta wartość nie jest uniwersalna i musi być obliczona samemu.
Oto jak się to oblicza:
Jeśli twojaSłużbaInstrumentwydajnośćWystarczy, a zasoby szerokopasmowe są wystarczające, PHPScenariuszJeśli nie ma pętli ani błędów, możesz po prostu ustawić "request_terminate_timeout" na 0. 0 oznacza, że PHP-CGI działa cały czas bez limitu czasu. Jeśli nie możesz tego zrobić, czyli jeśli Twoje PHP-CGI może mieć pewien błąd, przepustowość jest niewystarczająca lub inne powody powodują, że twoje PHP-CGI udaje śmierć, zaleca się przypisanie wartości "request_terminate_timeout", którą można ustawić zgodnie z wydajnością serwera. Generalnie im lepsza wydajność, tym wyższa jest ustawiona – 20 do 30 minut wystarczy. Ponieważ skrypty PHP na moim serwerze działają długo, niektóre mogą trwać ponad 10 minut, więc ustawiłem na 900 sekund, żeby nie powodować awarii PHP-CGI i nie pojawił się błąd 502 Bad gateway.
I jak oblicza się wartość "max_children"? Zasadniczo im większe, tym lepiej, php-cgiProcesJeśli będzie ich więcej, zostaną szybko przetworzone, a w kolejce będzie niewiele wniosków. max_children Ogólnie rzecz biorąc, w normalnych warunkach serwer zużywa około 20M pamięci na php-cgi, więc ustawiam "max_children" na 40, czyli 20M*40=800M, co oznacza, że całe PHP-CGI zużywało mniej niż 800M w godzinach szczytu, co jest mniej niż moja efektywna pamięć 1Gb. A jeśli mój "max_children" jest ustawiony mniej, np. 5-10, to php-cgi będzie "bardzo męczące", prędkość przetwarzania też bardzo wolna, a czas oczekiwania dłuższy. Jeśli żądanie nie zostało przetworzone przez długi czas, pojawi się błąd 504 Gateway Time-out, a przetwarzane php-cgi napotka błąd 502 Bad Gateway, jeśli napotka problemy.
|