Nginx高性能优化配置实战总结( 四 )


open_file_cache_valid 是设置主动更新和检查的时间,表示每隔 30 秒检查缓存文件的元信息有没有对应的更新,如果有更新就需要去做对应的更新,它是一个更新的策略 。
location / {index index.htm index.html;expires max;open_file_cache max=1000 inactive=20s;open_file_cache_valid 30s;open_file_cache_min_uses 2;open_file_cache_errors on;}代理缓存优化最后就是代理缓存的优化了,代理缓存比较常见,比如说代理访问 php 后台服务并作缓存,也可以代理 JAVA 服务,缓存 JAVA 后台服务的返回数据,注意这里不局限于通过 http_proxy来作代理缓存,只要 Nginx 支持的代理模式(UWSGI、SGI)都可以设置代理缓存 。你可以来看一下通过http_proxy设置的如下示例:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60mlocation / {proxy_cache my_cache;…}proxy_cache_path 表示在本地分配哪个路径来存储并缓存后台返回数据;cache levels 表示存放文件的分层方式;my_cache:10m max_size=10g 分别表示是开辟一个名为my_cache共享块(用于统计访问次数)及缓存的单个文件的最大大小等 。这些都是做对应的缓存在本地的文件目录相关属性的一些设置 。另外一块的设置表示在proxy_cache 的时候,通过 location 引用到 cache 的名称 。
代理缓存的特性是什么呢?首先通过 Nginx 作代理,可以支持实现动静态的分离,静态元素直接交给 Nginx 来处理,再把后端动态数据适当作缓存 。通常做这种代理+缓存的架构,是能有效的提高整体网站的访问并发性能 。
缓存使用注意问题对于缓存的整体使用,之前说的缓存越多越好,越靠前越好,命中率越高越好,但是同时我们也需要综合考虑,并且注意缓存在使用时遇到的一些实际问题 。

  • 文件更新策略问题 。文件后端做缓存的配置策略的时候,要考虑到缓存的删除策略、更新策略,怎么保证它的后端数据更新对于前端用户能够及时的感知 。
  • 缓存命中率失败给后端造成的瞬间压力 。我们知道,当前端缓存的元素越多,命中率越高,对于后台的压力就越少 。当一旦前端的缓存失效,或者某个节点迁移,或者某一部分的前端头信息失效,造成后端缓存瞬间压力,就可能会造成比较灾难性的后果 。所以你在网站设计的时候也需要考虑,怎么去避免这种缓存失效?一旦前端缓存失效,你怎么保证后端服务的高可用而不受影响?
  • 多节点缓存一致性 。你在做缓存设置的时候也需要考虑到,假设前端有很多个节点,保存同样的一部分内容的时候,怎么保证这些数据是能够达到一致性,这个时候也涉及缓存架构的设计,前端的缓存节点的更新策略,这些也是你在实际使用缓存时应该注意的问题 。
总结以上就是我们介绍的 Nginx 基础配置优化和缓存配置优化,下一次我们说一下 Nginx 的负载均衡优化配置 。

【Nginx高性能优化配置实战总结】


推荐阅读