引用網址:https://juejin.cn/post/6844903779578413064
前置工具
strace常用来跟踪进程执行时的系统调用和所接收的信号, 是一个强大的工具。
因为这里本人使用的是mac系统, 对应的mac分析命令 dtruss
dtruss使用
首先我们找到Nginx的woker进程id
ps -ef |grep nginx
# dtruss -p 进程号 监听请求
dtruss -p 864
复制代码
因为是mac系统,使用的是Kqueue事件模型,基本和epoll比较相似
我们的open_file_cache指令
官方地址: nginx.org/en/docs/htt…
句法: open_file_cache off;
open_file_cache max=N [inactive=time];
默认: open_file_cache off;
语境: http,server,location
复制代码
配置可以存储的缓存:
- 打开文件描述符,它们的大小和修改时间;
- 关于目录存在的信息;
- 文件查找错误,例如“找不到文件”,“没有读取权限”等。
- 应该通过open_file_cache_errors 指令单独启用缓存错误 。
该指令具有以下参数:
-
max
设置缓存中的最大元素数; 在缓存溢出时,删除最近最少使用(LRU)的元素;
-
inactive
定义一个时间,如果在此期间未访问该元素,则从该缓存中删除该元素; 默认情况下,它是60秒;
-
off
禁用缓存。
open_file_cache max=102400 inactive=20s;
max指定缓存数量 inactive是指经过多长时间文件没被请求后删除缓存。我指定了20s,所以等到至少20s不访问这个文件,相应缓存的这个文件的更改信息才会被删除。
句法: open_file_cache_errors on | off;
默认: open_file_cache_errors off;
语境: http,server,location
通过open_file_cache启用或禁用文件查找错误的缓存 。
复制代码
文件错误是否也同样缓存
句法: open_file_cache_min_uses number;
默认: open_file_cache_min_uses 1;
语境: http,server,location
复制代码
open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件更改信息一直是在缓存中打开的
句法: open_file_cache_valid time;
默认: open_file_cache_valid 60s;
语境: http,server,location
复制代码
这个是指多长时间检查一次缓存的有效信息。也就是说即使我一直访问这个文件,30s后会检查此文件的更改信息是否变化,发现变化就更新
nginx.conf 示例
nginx.conf配置
location / {
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
index index.html index.php;
}
复制代码
分析(使用dtruss工具追踪)
通过我们分析调用流程,观察第一次和第二次区别,第二次因为通过第一次已经把文件描述符缓存了,所以省略了 open("/Users/Shared/www/index.html")等文件操作,在大流量环境中,会有显著的提高。
但同时注意缓存的时效性,根据实际情况,来设置缓存的时间。
我们再试验一个反例说明 open_file_cache_errors:
- 将访问的index.html文件改为index.a
mv index.html index.a
复制代码
因为我们设置了open_file_cache_valid 30s,我们等待30s后,才会去检查缓存.
- 刷新浏览器
- 我们再将index.a改为index.html
mv index.a index.html
复制代码
因为open_file_cache_errors指令的开启(缓存错误信息), 同样需要等待30s,才能返回正确值
如果将open_file_cache_errors指令缓存关掉,将会立即生效。
此文主要介绍了open_file_cache相关指令用法, 希望此文对大家有所帮助.
作者:小宇渣渣渣
链接:https://juejin.cn/post/6844903779578413064
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
留言列表