HTTP核心模块配置静态web服务器 3-内存及磁盘资源的分配

来源:互联网 发布:unity3d ui特效制作 编辑:程序博客网 时间:2024/05/17 23:51
3,内存及磁盘资源的分配
3-1 HTTP包体只存储到磁盘文件中
语法:client_body_in_file_only on|clean|off;
默认:client_body_in_file_only off;
配置块:http,server,location
当值为非off时,用户请求中的hTTP包体一律存储到磁盘文件中,即使只有0字节也会存储为文件。当请求结束时,如果配置为on,则这个文件不会被删除(该配置
一般用于调试,定位问题),但如果配置clean,则会删除该文件
3-2 http包体尽量写入到一个内存buffer中
语法:client_body_in_single_buffer on|off;
默认:client_body_in_single_buffer off;
配置块:http,server,location
3-3 存储http头部的内存buffer大小
语法:client_header_buffer_size size;
默认:client_header_buffer_size 1k;
配置块:http,server
上面配置项定义了正常情况下nginx接收用户请求中http header部分(包括http行和http头部)时分配的内存buffer大小。有时,请求中http header部分可能会超过
这个大小,这时large_client_header_buffers定义的buffer将会生效
3-4 存储超大http头部的内存buffer大小
语法:large_client_header_buffers number size;
默认:large_client_header_buffers 48 k;
配置块:http,server
large_client_header_buffers定义了nginx接收一个超大http头部请求的buffer个数和每个buffer的大小。如果http请求行(如GET/index HTTP/1.1)的大小超过上面
的单个buffer,则返回"request URI too larger"(414)。请求中一般会有多个header,每一个header的大小也不能超过单个buffer的大小,否则会返回"Bad request
"(400)。当然,请求行和请求头部的综合也不可以超过buffer个数*buffer大小
3-5 存储http包体的内存buffer大小
语法:client_body_buffer_size size;
默认:client_body_buffer_size 8k/16k
配置块:http,server,location
上面配置项定义了nginx接收http包体的内存缓冲区大小。http包体会先接收到指定的这块缓存中,之后才界定是否写入磁盘
(如果用户请求的http头部中含有content-length,并且其标识的长度小于定义的buffer大小,那么nginx会自动降低本次请求的buffer)
3-6 http包体的临时存放目录
语法:client_body_temp_path dir-path [level1[level2[level3]]];
默认:client_body_temp_path client_body_temp;
配置块:http,server,location
上面配置项定义HTTP包体存放的临时目录。在接收HTTP包体时,如果包体的大小大于client_body_buffer_size,则会以一个递增的整数命名并存放在client_body_temp_path
指定的目录中。后面跟着的level1,level2,level3,是为了防止一个目录下的文件数量太多,从而导致性能下降,因此使用了level参数,这样可以按照临时文件名最多再加
三层目录。例如:
client_body_temp_path /opt/ngnix/client_temp 1 2;
如果新上传的http包体使用00000123456作为临时文件名,就会被存在放在这个目录中。这里的1代表1级目录数字长度1,2代表2级目录长度是2
/opt/nginx/client_temp/6/45/00000123456
3-7 connection_pool_size
语法:connection_pool_size size;
默认:connection_pool_size 256;
配置块:http,server
nginx对于每个建立成功的TCP连接会预先分配一个内存池,上边的size配置项将指定这个内存池的初始大小,用于减少内核对于小块内存的分配次数。需慎重设置,因为
更大的size会使服务器消耗的内存增多,而更小的size则会引发更多的内存分配次数。
3-8 request_pool_size
语法:request_pool_size size;
默认:request_pool_size 4k;
配置块:http,server
nginx开始处理http请求时,将会为每个请求都分配一个内存池,size配置项将指定这个内存池的初始大小(即ngx_http_request_t结构体中的pool内存池初始大小),用于减少内核对于
小块内存的分配次数。TCP连接关闭时会销毁connection_pool_size指定的连接内存池,http请求结束时会销毁request_pool_size指定的http请求内存池,但它们的创建,销毁时间
并不一致,因为一个TCP连接可能被复用于多个HTTP请求
0 0