最近訪問網(wǎng)站,提示我504 gateway time-out,當(dāng)我們在訪問大流量網(wǎng)站或者運(yùn)營有較多數(shù)據(jù)的網(wǎng)站時候,偶爾會出現(xiàn)504 Gateway Time-out錯誤,大多都是由于網(wǎng)站服務(wù)器配置不當(dāng)導(dǎo)致的,碰見這種情況,我們該如何坦然面對呢?
進(jìn)行正確合理nginx.conf配置,我們需要先了解和清楚我們網(wǎng)站服務(wù)器的配置性能,包括CPU、內(nèi)存等,并對網(wǎng)站服務(wù)器進(jìn)行必要的性能測試(可參考:vps主機(jī)性能測試方法詳解),從而準(zhǔn)確的掌握網(wǎng)站服務(wù)器自身性能狀況;
其次,是通過網(wǎng)站統(tǒng)計(jì)代碼的添加,分析段時間內(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è)置。
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ā)送和讀取時間限制,需根據(jù)服務(wù)器性能及網(wǎng)絡(luò)流量綜合考慮設(shè)置,時間設(shè)置過長會給網(wǎng)站服務(wù)器造成壓力,導(dǎo)致網(wǎng)站響應(yīng)緩慢,甚至服務(wù)器宕機(jī);時間設(shè)置過短,則就會出現(xiàn)504 Gateway Time-out或者其他CGI無響應(yīng)錯誤。
還有就是php-fpm.conf中max_children與request_terminate_timeout兩個重要參數(shù)的設(shè)置。這兩個參數(shù)的設(shè)置需要我們根據(jù)PHP程序情況及服務(wù)器帶寬狀況綜合考慮并計(jì)算出合理準(zhǔn)確的值,才能夠避免504 Gateway Time-out或者其他CGI無響應(yīng)錯誤的出現(xiàn)。通常情況下,般網(wǎng)站,可將request_terminate_timeou設(shè)置在900s左右,而max_children值根據(jù)服務(wù)器內(nèi)存大小和CGI請求數(shù)目設(shè)置為合理的數(shù)值,般設(shè)置為800M左右。