Nginx内存与磁盘资源的分配
本文介绍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连接关闭会销毁掉连接内存池,请求结束会销毁请求内存池。