Nginx使用教程(四):提高Nginx網絡吞吐量之buffers優化


請求緩沖區在NGINX請求處理中起着重要作用。 在接收到請求時,NGINX將其寫入這些緩沖區。 這些緩沖區中的數據可作為NGINX變量使用,例如$request_body。 如果緩沖區與請求大小相比較小,則數據將寫入磁盤上的文件,因此將涉及I/O操作。 NGINX提供了可以改變請求緩沖區的各種指令。

client_body_buffer_size

<br\>
此指令設置用於請求主體的緩沖區大小。 如果主體超過緩沖區大小,則完整主體或其一部分將寫入臨時文件。 如果NGINX配置為使用文件而不是內存緩沖區,則該指令會被忽略。 默認情況下,該指令為32位系統設置一個8k緩沖區,為64位系統設置一個16k緩沖區。 該指令在NGINX配置的http,server和location區塊使用。如下:

  1. server{
  2.       client_body_buffer_size 8k;
  3. }

client_max_body_size

<br\>
此指令設置NGINX能處理的最大請求主體大小。 如果請求大於指定的大小,則NGINX發回HTTP 413(Request Entity too large)錯誤。 如果服務器處理大文件上傳,則該指令非常重要。

默認情況下,該指令值為1m。 如下:

  1. server{
  2.       client_max_body_size 2m;
  3. }

client_body_in_file_only

<br\>
此指令禁用NGINX緩沖區並將請求體存儲在臨時文件中。 文件包含純文本數據。 該指令在NGINX配置的http,server和location區塊使用。 可選值有:
off:該值將禁用文件寫入
clean:請求body將被寫入文件。 該文件將在處理請求后刪除。
on: 請求正文將被寫入文件。 處理請求后,將不會刪除該文件。
默認情況下,指令值為關閉。 如下:

  1. http{
  2.       client_body_in_file_only clean;
  3. }

client_body_in_single_buffer

<br\>
該指令設置NGINX將完整的請求主體存儲在單個緩沖區中。 默認情況下,指令值為off。 如果啟用,它將優化讀取$request_body變量時涉及的I/O操作。如下例子:

  1. server{
  2.       client_body_in_single_buffer on;
  3. }

client_body_temp_path

<br\>
此指令指定存儲請求正文的臨時文件的位置。 除了位置之外,指令還可以指定文件是否需要最多三個級別的文件夾層次結構。 級別指定為用於生成文件夾的位數。
默認情況下,NGINX在NGINX安裝路徑下的client_body_temp文件夾創建臨時文件。 如下例子:

  1. server{
  2.       client_body_temp_pathtemp_files 1 2;
  3.       }

該指令生成的文件路徑如temp_files/1/05/0000003051。

client_header_buffer_size

<br\>
此指令與client_body_buffer_size類似。 它為請求頭分配一個緩沖區。 如果請求頭大小大於指定的緩沖區,則使用large_client_header_buffers指令分配更大的緩沖區。如下例子:

  1. http{
  2.       client_header_buffer_size 1m;
  3.       }

large_client_header_buffers

<br\>
此指令規定了用於讀取大型客戶端請求頭的緩沖區的最大數量和大小。 這些緩沖區僅在缺省緩沖區不足時按需分配。 當處理請求或連接轉換到保持活動狀態時,釋放緩沖區。如下例子:

    1. http{
    2.       large_client_header_buffers 4 8k;
    3.       }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM