共計(jì) 1432 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。
網(wǎng)頁(yè)提示 504 gateway time-out 是什么意思? 大家在訪問網(wǎng)站的時(shí)候通常會(huì)遇到 502 錯(cuò)誤、404 錯(cuò)誤等,很少會(huì)遇到 504 錯(cuò)誤。但是在我們?nèi)ピL問大流量或者內(nèi)容數(shù)據(jù)量較多的網(wǎng)站時(shí),打開網(wǎng)頁(yè)偶爾就會(huì)出現(xiàn) 504 gateway time-out,這到底是什么意思? 網(wǎng)頁(yè)出現(xiàn)這種情況又該如何解決呢?
以下原因會(huì)造成 504 gateway time-out:
(1) 首先需要確定的是后端服務(wù)器啟動(dòng)沒有,當(dāng)然在這里是 php-fpm 進(jìn)行啟動(dòng)沒有。
(2) 其次是確定 php-fpm 的 worker 進(jìn)程是否夠用。
(3)FastCGI 緩存或代理的緩存情況。
(4)PHP 執(zhí)行時(shí)間長(zhǎng)。
504 gateway time-out 是什么意思? 如何解決?
首先,大家對(duì)于 504 Gateway Time-out 的字面意思可以理解為網(wǎng)頁(yè)請(qǐng)求超時(shí),這是我們?cè)跒g覽網(wǎng)站網(wǎng)頁(yè)時(shí)發(fā)出的請(qǐng)求沒有響應(yīng),從網(wǎng)站程序?qū)用鎭?lái)講,是請(qǐng)求未能夠執(zhí)行相應(yīng)的 PHP-CGI 程序,或者 PHP-CGI 程序未能做出相應(yīng)的處理,又或者是 CGI 程序的響應(yīng)處理結(jié)果未能夠反饋到瀏覽器或者未能及時(shí)反饋到瀏覽器。
其次,04 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)存等基本配置,并對(duì)網(wǎng)站服務(wù)器進(jìn)行必要的性能測(cè)試,從而準(zhǔn)確的掌握網(wǎng)站服務(wù)器自身性能狀況;
接下來(lái),可以通過網(wǎng)站統(tǒng)計(jì)代碼的添加,分析一段時(shí)間內(nèi)網(wǎng)站流量狀況,比如:百度統(tǒng)計(jì)、CNZZ 站長(zhǎng)統(tǒng)計(jì)等,掌握網(wǎng)站日流量及 PHP-CGI 請(qǐng)求的大概情況;
最后,根據(jù)我們掌握的服務(wù)器性能狀況及網(wǎng)絡(luò)流量情況,合理的對(duì) nginx.conf 中的下列字句進(jìn)行合理正確的設(shè)置。
fastcgi_connect_timeout300s;
fastcgi_send_timeout300s;
fastcgi_read_timeout300s;
fastcgi_buffer_size128k;
fastcgi_buffers8128k;#8128
fastcgi_busy_buffers_size256k;
fastcgi_temp_file_write_size256k;
fastcgi_intercept_errorson;
這些字句的設(shè)置規(guī)定了 PHP-CGI 的連接、發(fā)送和讀取時(shí)間限制,需根據(jù)服務(wù)器性能及網(wǎng)絡(luò)流量綜合考慮設(shè)置,時(shí)間設(shè)置過長(zhǎng)會(huì)給網(wǎng)站服務(wù)器造成壓力,導(dǎo)致網(wǎng)站響應(yīng)緩慢,甚至服務(wù)器宕機(jī); 時(shí)間設(shè)置過短,則會(huì)出現(xiàn) 504 Gateway Time-out 或者其他 CGI 無(wú)響應(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 無(wú)響應(yīng)錯(cuò)誤的出現(xiàn)。
正常情況下,一般網(wǎng)站可將 request_terminate_timeou 設(shè)置在 900s 左右,而 max_children 值根據(jù)服務(wù)器內(nèi)存大小和 CGI 請(qǐng)求數(shù)目設(shè)置為合理的數(shù)值,一般設(shè)置為 800M 左右。