老刘笔记老刘笔记

欢迎光临
我们一直在努力!

Nginx缓存机制、Nginx缓存原理

nginx 缓存作为性能优化的一个重要手段,可以极大减轻后端服务器的负载。
下面我们将介绍 nginx Proxy Cache文件缓存缓存机制及原理。
Nginx缓存机制及缓存原理

nginx缓存机制与原理
nginx在启动1分钟后会启动Cache Loader进程来生成现有缓存文件对应的内存中的元数据和key值。
(注:linux文件的组成:文件由数据与元数据组成。
据就是文件的内容
元数据就是文件的属性信息,如权限、大小、名称、时间戳、所有者、所属组、inode等)
在内存中建立缓存索引,提高访问效率,
并且还会生成cache manager process 管理进程对磁盘上的缓存文件进行过期判定、更新等方面的管理。
如下图:

nginx cache manager process 进程

cache loader进程仅在cache打开时才会有,而且存在时间非常短,
它是用于将之前nginx产生的cache信息元数据读入内存中的,读取完成后就会退出。

缓存配置案例:
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m inactive=10m
loader_threshold=300 loader_files=200 max_size=200m;
缓存文件目录:/data/nginx/cache
缓存键名称:one
缓存占用共享内存大小:10m
缓存目录级别为2
缓存最大时间为10分钟
加载器每次迭代过程最多执行300毫秒
加载器每次迭代过程中最多加载200个文件
缓存硬盘空间最多为 200m

缓存配置参数解析:

inactive:
共享内存的值在规定时间内没有被访问就会被清理,
默认配置为10min指定数据可以在缓存中保留多长时间未访问而不删除
指定了项目在不被访问的情况下可以在缓存中保留多长时间

key_zone:
定义缓存文件元数据和key值存放的共享内存区域
表示共享内存大小,1mb大约可以存放8000个key
自定义key
proxy_cache_key $scheme$proxy_host$uri$is_args$args;

path:定义缓存文件存放位置

levels:定义缓存路径的目录层级
默认所有缓存文件都放在上面指定的根路径中,最多三级,每层目录长度为1或2字节;

max_size:设置缓存大小的上限。
它是可选的,不指定值允许缓存增长以使用所有可用磁盘空间。
当缓存大小达到限制时,cache manager process缓存进程将删除最近最少用于将缓存大小恢复到限制之下的文件
缓存管理器会定期激活以检查缓存的状态。
如果缓存大小超过proxy_cache_path指令的max_size参数设置的限制,缓存管理器将删除最近访问的数据。

cache loader缓存加载策略
cache loader只在nginx启动后运行一次,把缓存内容的元数据信息加载到内存空间,
如果一次性加载全部缓存信息,会大量消耗资源,使nginx在启动后的几分钟里变慢,
为避免此问题,有3种迭代加载策略:
loader_threshold:指定每次加载执行的时间
loader_files:每次最多加载的数量
loader_sleeps:每次加载的延时
文章链接https://www.rjyl100.cn/detail/134.html
版权声明:文章由本站原创或网友分享,禁止转载!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请与我们联系,我们将及时更正、删除,谢谢。
温馨提示本站信息来自互联网或网友分享,请大家查阅时,谨慎选择、自辩真伪,自负责任。

梦想还是要有的,万一实现了呢?老刘笔记,感谢有您陪伴!