HTTP核心模块配置静态web服务器 7-文件操作的优化

来源:互联网 发布:阿里云 服务器买错了 编辑:程序博客网 时间:2024/06/06 00:23
7,文件操作的优化
7-1,sendfile系统调用
语法:sendfile on|off;
默认:sendfile off;
配置块:http,server,location
可以启动linux上的sendfile系统调用来发送文件,它减少了内核态与用户态之间的两次内存复制,这样就会从磁盘中读取文件后直接在内核态发送到网卡设备,提高了发送文件的效率
7-2,AIO系统调用
语法:aio on|off;
默认:aio off;
配置块:http,server,location
此配置项表示是否在FreeBSD或linux系统上启用内核级别的异步文件I/O功能。注意,它与sendfile功能是互斥的
7-3,directio
语法:directio size|off;
默认:directio off;
配置块:http,server,location
此配置项在FreeBSD和linux系统上使用O_DIRECT选项去读取文件,缓冲区大小为size,通常对大文件的读取速度有优化作用,注意,它与sendfile功能是互斥的
7-4,directio_alignment
语法:directio_alignment size;
默认:directio_alignment 512;
配置块:http,server,location
它与directio配合使用,指定以directio方式读取文件时的对齐方式。一般512B足够,但对一些高性能文件系统,如linux下的XFS文件系统,需要设置到4k
7-5,打开文件缓存
语法:open_file_cache max=N[inactice=time]|off;
默认:open_file_cache off;
配置块:http,server,location
文件缓存会在内存中存储以下3种信息:
1.文件句柄,文件大小和上次修改时间
2.已经打开过的目录结构
3.没有找到的或者没有权限操作的文件信息
这样,通过读取缓存就减少了对磁盘的操作。
参数含义:
max:表示在内存中存储元素的最大个数。当达到最大限制数量后,将采用LRU算法从缓存中淘汰最近最少使用的元素
inactive:表示在inactive指定的时间段内没有被访问过的元素将会被淘汰,默认时间60秒
off:关闭此功能
例如:
   open_file_cache max=1000
   inactive=20s;
7-6 是否缓存打开文件错误的信息
语法:open_file_cache_errors on|off;
默认:open_file_cache_errors off;
配置块:http,server,location
此配置项表示是否在文件缓存中缓存打开文件时出现的找不到路径,没有权限等信息。
7-7 不被淘汰的最小访问次数
语法:open_file_cache_min_uses number;
默认:open_file_cache_min_uses 1;
配置块:http,server,location
它与open_file_cache 中的inactive参数配合使用,如果在inactive指定的时间段内,访问次数超过了指定的最小次数,将不会被淘汰出缓存
7-8 检验缓存中元素有效性的频率
语法:open_file_cache_valid time;
默认:open_file_cache_valid 60s;
配置块:http,server,location
默认为每60秒检查一次缓存中的元素是否仍有效。 
0 0