nginx服務器出現504 gateway time-out怎麼解決

作網站的同窗常常會發現一些nginx服務器訪問時候提示504 Gateway Time-out錯誤,而出現這種錯誤有兩種狀況,第一種多是因爲nginx默認的fastcgi進程響應的緩衝區過小形成的, 這將致使fastcgi進程被掛起, 若是你的fastcgi服務對這個掛起處理的很差, 那麼最後就極有可能致使504 Gateway Time-out。而第二種就有多是PHP環境的配置問題,有些網站一直是使用nginx作代理後端的apache運行php來提供服務。apache常常會不按期不定時間的出現不能服務失去響應,而後nginx出現」504 Gateway Time-out」.

那麼遇到這些狀況應該怎樣處理呢?下面是關於nginx服務器出現504 Gateway Time-out的解決方法。php

緣由一:nginx

因爲nginx默認的fastcgi進程響應的緩衝區過小形成apache

解決方式:後端

通常默認的fastcgi進程響應的緩衝區是8K,這時能夠設置大一點,在nginx.conf裏,加入:安全

fastcgi_buffers 8 128k服務器

這表示設置fastcgi緩衝區爲8塊128k大小的空間。網絡

固然若是在進行某一項即時的操做, 可能須要nginx的超時參數調大點, 例如設置成60秒:php-fpm

send_timeout 60;測試

通過這兩個參數的調整,通常不會再提示「504 Gateway Time-out」錯誤,問題基本解決。網站

狀況二:

PHP環境的配置問題

有時候網站須要對php-fpm和nginx進行配置修改。由於這種狀況下,也會出現「504 Gateway Time-out」錯誤提示。而這時候Nginx 504 Gateway Time-out的含義就是所請求的網關沒有請求到,簡單來講就是沒有請求到能夠執行的PHP-CGI。

解決方式

更改php-fpm的幾處配置:

把max_children由以前的10改成如今的30,這樣就能夠保證有充足的php-cgi進程能夠被使用;

把request_terminate_timeout由以前的0s改成60s,這樣php-cgi進程 處理腳本的超時時間就是60秒,能夠防止進程都被掛起,提升利用效率。

接着再更改nginx的幾個配置項,減小FastCGI的請求次數,儘可能維持buffers不變:

fastcgi_buffers由 4 64k 改成 2 256k;

fastcgi_buffer_size 由 64k 改成 128K;

fastcgi_busy_buffers_size 由 128K 改成 256K;

fastcgi_temp_file_write_size 由 128K 改成 256K。

從新加載php-fpm和nginx的配置,再次測試,若是沒有出現「504 Gateway Time-out」錯誤,問題解決。

狀況三

另外,php-fpm的默認靜態處理方式會使得php-cgi的進程長期佔用內存而沒法釋放,這也是致使nginx出錯的緣由之一,所以能夠將php-fpm的處理方式改爲apache模式。

SSL證書是HTTP明文協議升級HTTPS加密協議的重要渠道,是網絡安全傳輸的加密到通道。關於更多SSL證書的資訊,請關注GDCA(數安時代)。GDCA致力於網絡信息安全,已經過WebTrust 的國際認證,是全球可信任的證書籤發機構。GDCA專業技術團隊將根據用戶具體狀況爲其提供最優的產品選擇建議,並針對不一樣的應用或服務器要求提供專業對應的HTTPS解決方案。

相關文章
相關標籤/搜索