我們經常會發現大量的nginx服務器訪問時會提示nginx
Gateway Time
out錯誤了
下面我來總結了一些解決辦法
有需要了解的同學可進入參考
一般看來 這種情況可能是由於nginx默認的fastcgi進程響應的緩沖區太小造成的 這將導致fastcgi進程被掛起 如果你的fastcgi服務對這個掛起處理的不好 那麼最後就極有可能導致 Gateway Timeout
現在的網站 尤其某些論壇有大量的回復和很多內容的 一個頁面甚至有幾百K
默認的fastcgi進程響應的緩沖區是K 我們可以設置大點
在nginxconf裡 加入:
fastcgi_buffers k
這表示設置fastcgi緩沖區為×k
當然如果您在進行某一項即時的操作 可能需要nginx的超時參數調大點 例如設置成秒:
send_timeout ;
我只是調整了這兩個參數 結果就是沒有再顯示那個超時 可以說效果不錯
另一篇文章
首先是更改phpfpm的幾處配置
把max_children由之前的改為現在的這樣就可以保證 有充足的phpcgi進程可以被使用
把request_terminate_timeout由之前的s改為s這樣phpcgi進程 處理腳本的超時時間就是秒可以防止進程都被掛起提高利用效率
接著再更改nginx的幾個配置項減少FastCGI的請求次 數盡量維持buffers不變
fastcgi_buffers由 k 改為 k
fastcgi_buffer_size 由 k 改為 K
fastcgi_busy_buffers_size 由 K 改為 K
fastcgi_temp_file_write_size 由 K 改為 K
好了重新加載phpfpm和nginx的配置再次測試至今兩周時間內沒有再出現 Gateway Timeout的情況算是達到效果了
另外phpfpm的默認靜態處理方式會使得phpcgi的進程長期占用內存而無法釋放這也是導致nginx出錯的原因之一因此可以將phpfpm的處理方式改成apache模式
apachelike
From:http://tw.wingwit.com/Article/program/Java/gj/201405/30821.html