本文介紹Nginx靜態web服務器配置中的內存與磁盤資源的分配,即處理請求時,內存和磁盤資源的分配配置項。
1.HTTP包體保存在磁盤中
語法:client_body_in_file_only on|clean|off;
默認:client_body_in_file_only off;
配置塊:server、http、location
當配置為off時,HTTP包體不會保存在磁盤中。非off時,用戶請求中的HTTP包體將會保存在磁盤文件中(即使為0字節),當請求結束時,配置為on的話,該文件將會被保留。如果時clean的話,請求結束時,就會刪除該文件。
2.HTTP包體盡量寫入一個buffer中
語法:client_body_in_single_buffer on|off;
默認:client_body_in_single_buffer off;
配置塊:http、server、location
用戶請求的HTTP包體在client_body_buffer_size內存大小之內時,一概保存在buffer中。
3.存儲HTTP頭部buffer內存大小
語法:client_header_buffer_size size;
默認:client_header_buffer_size 1K;
配置塊:http、server
正常情況下Nginx接收用戶請求中HTTP header部分時分配的內存大小,當請求中的HTTP header部分超過這個大小的時候,large_client_header_buffers的配置將會生效。
4.存儲超大HTTP頭部內存大小
語法:large_client_header_buffers number size;
默認:large_client_header_buffers 48K;
配置塊:http、server
該配置項定義了Nginx接收一個超大的HTTP頭部請求個數與大小。如果HTTP請求行的大小超過上面單個buffer,將會返回414請求uri太大。請求中一般會有多個header,如果存在header大小超過單個buffer,將會返回400非法請求。同時請求行與請求頭的總和不能超過buffer數*buffer大小。
5.存儲HTTP包體內存大小
語法:client_body_buffer_size size;
默認:client_body_buffer_size 8K/16K;
配置塊:http、server、location
該配置定義了Nginx接收HTTP包體的內存緩沖區大小。
6.HTTP包體臨時存儲路徑
語法:client_body_temp_path dir-path[level1[level2[level3]]]
默認:client_body_temp_path client_body_temp;
配置塊:http、server、location
該配置設置HTTP包體存儲的臨時目錄。在接受HTTP包體時,如果包體大小大於存儲HTTP包體內存大小,將會以一個遞增整數命名保存在指定的歷史路徑下,會根據等級設置多層目錄。
7.connection_pool_size
語法:connection_pool_size size;
默認:connection_pool_size 256;
配置塊:http、server
Nginx會為每一個TCP連接分配一個內存池,該配置就是內存池的初始大小,用於減少內核對於小塊內存的分配次數。配置太大會增加服務器內存消耗,太小會增加服務器內存分配次數。
8.請求內存池
語法:request_pool_size size;
默認:request_pool_size 4K;
配置塊:http、server
前面一個是連接的初始內存池,這個是一個請求的初始內存池。TCP連接關閉會銷毀掉連接內存池,請求結束會銷毀請求內存池。