- 工信部备案号 滇ICP备05000110号-1
- 滇公网安备53011102001527号
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
- CN域名投诉举报处理平台:电话:010-58813000、邮箱:service@cnnic.cn
很多生产环境中的 Nginx 已经开启了 Gzip、Keepalive、Sendfile 等优化,但往往忽略了一个非常实用的功能:
open_file_cache
当网站拥有大量图片、CSS、JS 等静态资源时,Nginx 每次处理请求都需要执行文件状态检查。
例如:
检查文件是否存在
获取文件大小
读取文件属性
检查目录权限
这些操作会频繁调用系统 stat(),在高并发场景下会产生额外的系统开销。
通过 Open File Cache,可以将这些文件元数据缓存到内存中,大幅降低系统调用次数。
使用 strace 观察 Nginx Worker:
查看 Worker PID:
ps -ef | grep nginx
例如:
root 1001 nginx: master process
nginx 1002 nginx: worker process
跟踪:
strace -p 1002 -e stat,lstat,fstat
访问静态文件:
curl http://www.landui.com/static/logo.png
会发现大量:
stat("/data/www/static/logo.png", ...)
请求量越高,调用越频繁。
在 http 配置块添加:
http {
open_file_cache max=100000 inactive=60s;
open_file_cache_valid 120s;
open_file_cache_min_uses 2;
open_file_cache_errors on;
}
参数说明:
max=100000
最大缓存对象数
inactive=60s
60秒未访问自动清理
open_file_cache_valid
缓存验证周期
open_file_cache_min_uses
访问次数达到指定值后缓存
open_file_cache_errors
缓存错误结果
重载配置:
nginx -t && nginx -s reload
小型网站:
open_file_cache max=5000 inactive=30s;
中型业务:
open_file_cache max=50000 inactive=60s;
CDN节点或下载站:
open_file_cache max=200000 inactive=300s;
对于图片站、下载站、对象存储网关、CDN边缘节点等场景,open_file_cache 往往是投入极小但收益明显的一项优化。很多服务器性能瓶颈并不在网络和磁盘吞吐,而是在频繁的文件元数据查询,合理利用 Open File Cache 能有效释放 Nginx 的处理能力。
售前咨询
售后咨询
备案咨询
二维码

TOP