當(dāng)我們在訪問大流量網(wǎng)站phpcms或者運(yùn)營有較多數(shù)據(jù)的網(wǎng)站時(shí)候,偶爾會(huì)出現(xiàn)504 Gateway Time-out錯(cuò)誤,那么Nginx 504 gateway time-out怎么解決?504 gateway time-out nginx什么意思呢?跟著小編一起看看吧。
504 gateway time-out nginx什么意思?
504 Gateway Time-out字面意思,我們可以理解為網(wǎng)頁請求超時(shí),也是瀏覽網(wǎng)站網(wǎng)頁所發(fā)出的請求沒有反應(yīng)或者未響應(yīng),在網(wǎng)站phpcms層面來說,是請求未能夠執(zhí)行相應(yīng)的PHP-CGI程序,或者PHP-CGI程序未能做出相應(yīng)的處理,又或者是CGI程序的響應(yīng)處理結(jié)果未能夠反饋到瀏覽器或者未能及時(shí)反饋到瀏覽器。
Nginx 504 gateway time-out怎么解決?
504 Gateway Time-out錯(cuò)誤多是存在于Nginx網(wǎng)站服務(wù)器環(huán)境下,多與nginx.conf與php-fpm.conf設(shè)置是否正確合理有關(guān)。504GatewayTime-out錯(cuò)誤的解決方法是根據(jù)網(wǎng)站服務(wù)器性能及網(wǎng)站流量等諸多因素整合考慮,正確合理的設(shè)置niginx.conf和php-fpm.conf配置。
進(jìn)行正確合理nginx.conf配置,我們需要首先了解和清楚我們網(wǎng)站服務(wù)器的配置性能,包括CPU、內(nèi)存等,并對網(wǎng)站服務(wù)器進(jìn)行必要的性能測試,從而準(zhǔn)確的掌握網(wǎng)站服務(wù)器自身性能狀況;
其次,是通過網(wǎng)站統(tǒng)計(jì)代碼的添加,分析一段時(shí)間內(nèi)網(wǎng)站流量狀況,比如:百度統(tǒng)計(jì)、CNZZ站長統(tǒng)計(jì)等,掌握網(wǎng)站日流量及PHP-CGI請求的大概情況;
根據(jù)我們掌握的服務(wù)器性能狀況及網(wǎng)絡(luò)流量情況,合理的對nginx.conf中的下列字句進(jìn)行合理正確的設(shè)置。
這些字句的設(shè)置規(guī)定了PHP-CGI的連接、發(fā)送和讀取時(shí)間限制,需根據(jù)服務(wù)器性能及網(wǎng)絡(luò)流量綜合考慮設(shè)置,時(shí)間設(shè)置過長會(huì)給網(wǎng)站服務(wù)器造成壓力,導(dǎo)致網(wǎng)站響應(yīng)緩慢,甚至服務(wù)器宕機(jī);時(shí)間設(shè)置過短,則會(huì)出現(xiàn)504 Gateway Time-out或者其他CGI無響應(yīng)錯(cuò)誤。
還有是php-fpm.conf中max_children與request_terminate_timeout兩個(gè)重要參數(shù)的設(shè)置。
這兩個(gè)參數(shù)的設(shè)置需要我們根據(jù)PHP程序情況及服務(wù)器帶寬狀況綜合考慮并計(jì)算出合理準(zhǔn)確的值,才能夠避免504 Gateway Time-out或者其他CGI無響應(yīng)錯(cuò)誤的出現(xiàn)。
通常情況下,一般網(wǎng)站,可將request_terminate_timeou設(shè)置在900s左右,而max_children值根據(jù)服務(wù)器內(nèi)存大小和CGI請求數(shù)目設(shè)置為合理的數(shù)值,一般設(shè)置為800M左右。
除此之外,還有以下原因會(huì)造成504 gateway time-out:
(1)首先需要確定的是后端服務(wù)器啟動(dòng)沒有,當(dāng)然在這里是php-fpm進(jìn)行啟動(dòng)沒有。
?。?)其次是確定php-fpm的worker進(jìn)程是否夠用。
(3)FastCGI緩存或代理的緩存情況。
?。?)PHP執(zhí)行時(shí)間長。