您好,登錄后才能下訂單哦!
這篇文章主要介紹“Nginx中buffer參數的設置方法”,在日常操作中,相信很多人在Nginx中buffer參數的設置方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Nginx中buffer參數的設置方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
打開Nginx的error.log日志文件,發現很多warn的警告錯誤,提示:
①2016/03/25 13:18:35 [warn] 1171#0: *10875 an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/0/08/0000000080 while reading upstream, client: 106.38.241.105, server: blog.tanteng.me, request: “GET /page/38/ HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “blog.tanteng.me”.
如圖所示:
以及這樣的警告:
②2016/03/25 15:16:07 [warn] 6172#0: *1243 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000001, client: 193.201.227.83, server: blog.tanteng.me, request: “POST /xmlrpc.php HTTP/1.1”, host: “blog.tanteng.me”, referrer: “http://tantengvip.com/xmlrpc.php”
這個需要設置增加client_body_buffer_size的大小。緩沖區設置小了,Nginx會把內容寫到硬盤,這樣會影響性能。于是在nginx.conf中增加如下fastcgi buffers參數設置:
1 2 3 4 5 6 7 8 9 10 11 12 | location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; client_body_buffer_size 1024k; include fastcgi_params; } |
經過設置后,一段時間內都沒有發現這種錯誤日志。
對于來自 FastCGI Server 的 Response,Nginx 將其緩沖到內存中,然后依次發送到客戶端瀏覽器。緩沖區的大小由 fastcgi_buffers 和 fastcgi_buffer_size 兩個值控制。
比如如下配置:
1 2 | fastcgi_buffers 8 4K; fastcgi_buffer_size 4K; |
astcgi_buffers 控制 nginx 最多創建 8 個大小為 4K 的緩沖區,而 fastcgi_buffer_size 則是處理 Response 時第一個緩沖區的大小,不包含在前者中。所以總計能創建的最大內存緩沖區大小是 8*4K+4K = 36k。而這些緩沖區是根據實際的 Response 大小動態生成的,并不是一次性創建的。比如一個 8K 的頁面,Nginx 會創建 2*4K 共 2 個 buffers。
當 Response 小于等于 36k 時,所有數據當然全部在內存中處理。如果 Response 大于 36k 呢?fastcgi_temp 的作用就在于此。多出來的數據會被臨時寫入到文件中,放在這個目錄下面。
buffer的大小是你需要調優最重要參數。如果buffer size太小就會到導致nginx使用臨時文件存儲response,這會引起磁盤讀寫IO,流量越大問題越明顯。
client_body_buffer_size 處理客戶端請求體buffer大小。用來處理POST提交數據,上傳文件等。client_body_buffer_size 需要足夠大以容納如果需要上傳POST數據。
fastcgi_buffers,proxy_buffers 處理后端響應。如果這個buffer不夠大,同樣會引起磁盤都系IO。需要注意的是它們有一個上限值,這個上限值受 fastcgi_max_temp_file_size 、 proxy_max_temp_file_size控制。
這個參數指定了從FastCGI進程到來的應答,本地將用多少和多大的緩沖區讀取,假設一個PHP或JAVA腳本所產生頁面大小為256kb,那么會為其分配4個64kb的緩沖來緩存;若頁面大于256kb,那么大于256kb的部分會緩存到fastcgi_temp指定路徑中,這并非是個好辦法,內存數據處理快于硬盤,一般該值應該為站點中PHP或JAVA腳本所產生頁面大小中間值,如果站點大部分腳本所產生的頁面大小為256kb,那么可把值設置為16 16k,4 64k等。
讀取fastcgi應答第一部分需要多大緩沖區,該值表示使用1個64kb的緩沖區讀取應答第一部分(應答頭),可以設置為fastcgi_buffers選項緩沖區大小。
連接到后端fastcgi超時時間,單位秒,下同。
向fastcgi請求超時時間(這個指定值已經完成兩次握手后向fastcgi傳送請求的超時時間)
接收fastcgi應答超時時間,同理也是2次握手后。
到此,關于“Nginx中buffer參數的設置方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。