本文记录Nginx静态web服务器文件操作优化的配置项。
1.sendfile系统调用
语法:sendfile on|off;
默认:sendfile off;
配置块:http、server、location
可以启用Linux上的sendfile系统调用来发送文件,它可以减少内核态与用户态之间的俩次内存复制,从磁盘读取文件之后直接在内核态发送给网卡设备,提高发送文件的效率。
2.AIO系统调用
语法:aio on|off;
默认:aio off;
配置块:http、server、location
该配置表示在FreeBSD或Linux系统启用内核级别的异步文件IO功能,其与sendfile功能互斥。
3.directio
语法:directio size|off;
默认:directio off;
配置块:http、server、location
该配置项表示在FreeBSD与Linux系统上使用O_DIRECT选项去读取文件,缓冲区大小为size,对于大文件的读取速度有优化作用,与sendfile互斥。
4. directio_alignment
语法:directio_alignment size;
默认:directio_alignment 512;
配置块:http、server、location
它与directio一起使用,指定以directui方式读取文件时的对齐方式。一般情况512B就可以了,但是针对如xfs文件系统一般的高性能文件系统可能需要设置到4KB作为对齐方式。
5.打开文件缓存
语法:open_file_cache max=N[inactive=time]|off;
默认:open_file_cache off;
配置块:http、server、location
文件缓存在内存中会存储3种信息(因此通过读取缓存可以减少对于磁盘的操作):
1.文件句柄、文件大小以及上次修改时间
2.已经打开过的目录结构
3.没找到或者没有权限操作的文件信息
open_file_cache max=1000 inactive=2;
这里解释一下参数:
1.max-表示在内存中存储元素的最大个数。当超过最大限制数之后,将会根据LRU算法从缓存中淘汰最近最少使用的元素。
2.inactive-表示在inactive指定时间段没有被访问过的元素将会被淘汰,默认为60s。
3.off-关闭缓存功能
6.是否缓存打开文件错误的信息
语法:open_file_cache_errors on|off;
默认:open_file_cache_errors off;
配置块:http、server、location
该配置表示是否在文件缓存中缓存打开文件时出现的找不到路径、没有权限等错误信息。
7.不被淘汰的最小访问次数
语法:open_file_cache_min_users number;
默认:open_file_cache_min_uses 1;
配置块:http、server、location
该配置和open_file_cache中的inactive参数配合使用,表示在inactive指定的时间中,如果访问次数超过了该配置值,那么将不会被淘汰出缓存。
8.检验缓存中元素有效性的频率
语法:open_file_cache_valid time;
默认:open_file_cache_valid 60s;
配置块:http、server、location
默认每60s检测一次缓存中的元素是否有效。