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