Detta specificerar anslutning, sändning och läsning av PHP-CGITid, 300 sekunder räcker, så minserver504:or dyker sällan uppGatewayTimeout-fel. Det viktigaste ärphp-FPM.konferensavFörbereda, vilket direkt leder till 502 Bad Gateway och 504 Gateway Time-out.
Låt oss titta närmare på några viktiga delar av php-fpm.confparameter:
php-fpm.conf har två avgörande parametrar, en är "max_children" och den andra är "request_terminate_timeout"
Jag har två inställningar med värdena "40" och "900", men detta värde är inte universellt, utan måste beräknas av mig själv.
Så här beräknas det:
Om dinTjänstInstrumentföreställningTillräckligt bra, och bredbandsresurserna är tillräckliga, PHPManusOm det inte finns några loopar eller buggar kan du bara ställa in "request_terminate_timeout" till 0. 0:or betyder att PHP-CGI körs hela tiden utan tidsgräns. Om du inte kan göra detta, det vill säga om din PHP-CGI kan ha en viss bugg, eller om din bandbredd inte räcker till eller andra orsaker gör att din PHP-CGI fejkar att dö, rekommenderas det att du tilldelar ett värde till "request_terminate_timeout", som kan ställas in efter serverns prestanda. Generellt sett, ju bättre prestanda, desto högre kan du ställa in den, 20–30 minuter är okej. Eftersom mina server-PHP-skript tar lång tid att köra, vissa kan vara mer än 10 minuter, så jag ställde in det på 900 sekunder så att PHP-CGI inte dör och jag får 502 Bad gateway-felet.
Och hur beräknas värdet av "max_children"? I princip, ju större desto bättre, php-cgiProcessOm det finns fler kommer det att behandlas snabbt, och det kommer att finnas få förfrågningar i kön. max_children Generellt sett, under normala omständigheter, förbrukar en server ungefär 20 miljoner minne per php-cgi, så jag ställer in min "max_children" till 40, 20M*40=800M, vilket betyder att all PHP-CGI förbrukade mindre än 800 miljoner vid topptid, vilket är lägre än mitt effektiva minne på 1 GB. Och om min "max_children" är inställd på mindre, som 5-10, så kommer php-cgi att vara "väldigt tröttsamt", bearbetningshastigheten är också mycket långsam och väntetiden är längre. Om förfrågan inte har behandlats på länge kommer 504 Gateway Time-out-felet att visas, och php-cgi:n som bearbetas kommer att stöta på ett 502 Bad gateway-fel om den stöter på problem.
|