帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  Nginx 利用 Open File Cache 优化静态资源访问性能

Nginx 利用 Open File Cache 优化静态资源访问性能

2026-07-01 15:37:33 604

Nginx 利用 Open File Cache 优化静态资源访问性能

很多生产环境中的 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", ...)

请求量越高,调用越频繁。

开启 Open File Cache

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 的处理能力。

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: