Aceasta specifică conexiunea, trimiterea și citirea PHP-CGIOră, 300 de secunde sunt suficiente, deci al meuServer504-urile apar rarPoartaEroare de time-out. Cel mai important lucru estePHP-FPM.ConfdeConfigurat, ceea ce va duce direct la 502 Bad Gateway și 504 Gateway Time-out.
Să aruncăm o privire mai atentă asupra unor părți importante ale php-fpm.confparametru:
php-fpm.conf are doi parametri esențiali, unul este "max_children" și celălalt este "request_terminate_timeout"
Am două setări cu valori "40" și "900", dar această valoare nu este universală, ci trebuie calculată de mine.
Iată cum se calculează:
Dacă e al tăuServiciuInstrumentperformanțăSuficient de bine, iar resursele de bandă largă sunt suficiente, PHPScenariuDacă nu există bucle sau bug-uri, poți pur și simplu să setezi "request_terminate_timeout" la 0. 0s înseamnă că PHP-CGI rulează tot timpul fără o limită de timp. Dacă nu poți face asta, adică PHP-CGI-ul tău poate avea un anumit bug, sau lățimea ta de bandă nu este suficientă sau alte motive fac ca PHP-CGI-ul tău să se prefacă moarte, atunci este recomandat să atribui o valoare "request_terminate_timeout", care poate fi setată în funcție de performanța serverului tău. În general, cu cât performanța este mai bună, cu atât o poți seta mai sus, 20 de minute - 30 de minute este în regulă. Deoarece scripturile PHP ale serverului meu durează mult să ruleze, unele pot dura mai mult de 10 minute, așa că le-am setat la 900 de secunde ca să nu se oprească PHP-CGI și să apară eroarea 502 Bad gateway.
Și cum se calculează valoarea "max_children"? În principiu, cu cât mai mare, cu atât mai bine, php-cgiProcesDacă sunt mai multe, vor fi procesate rapid și vor fi puține cereri în coadă. max_children În general, în condiții normale, un server consumă aproximativ 20M de memorie per php-CGI, așa că setez "max_children" la 40, 20M*40=800M, ceea ce înseamnă că tot PHP-CGI consuma mai puțin de 800M la momentul de vârf, ceea ce este mai mic decât memoria mea efectivă de 1Gb. Și dacă "max_children" meu este setat mai mic, de exemplu 5-10, atunci php-CGI va fi "foarte obositor", viteza de procesare este de asemenea foarte lentă, iar timpul de așteptare este mai lung. Dacă cererea nu a fost procesată de mult timp, va apărea eroarea de time-out a gateway-ului 504, iar cgi-ul php care este procesat va întâmpina o eroare gateway 502 Bad dacă întâmpină probleme.
|