您的位置:首页 > 理论基础 > 计算机网络

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

2016-10-26 07:45 766 查看
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请求
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐