如何根据业务量精准分配内存配置Nginx proxy_cache_path的keys_zone?

2026-04-24 16:430阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计809个文字,预计阅读时间需要4分钟。

如何根据业务量精准分配内存配置Nginx proxy_cache_path的keys_zone?

keys_zone 分配的内存只存储缓存 key 和元数据(例如访问次数、过期时间),不存在响应实体本身。1MB 共享内存 + 存 8000 个 key。如果您的业务每秒产生 100 个唯一 URL,按 1 小时内不重复计算,就是 36 万 key;按 1 天计算,就是 864 万 key — 此时 keys_zone=my_cache:1m 显然不足,会导致频繁淘汰 key,降低缓存命中率。

怎么算出实际需要的 keys_zone 大小

先确认你最关心的缓存粒度:是按 $uri?还是带完整 query 的 $scheme$host$uri$is_args$args?粒度越细,key 越多。再结合业务日志估算:

  • awk '{print $7}' access.log | sort -u | wc -l 粗略统计一天内独立 URI 数量
  • 若启用了 proxy_cache_key "$scheme$host$uri$is_args$args",再用 awk -F'"' '{print $2}' access.log | awk '{print $1,$2}' | sort -u | wc -l 估算带参数的唯一请求量
  • 把结果除以 8000,向上取整,就是所需 MB 数。
阅读全文
标签:NginxProxy

本文共计809个文字,预计阅读时间需要4分钟。

如何根据业务量精准分配内存配置Nginx proxy_cache_path的keys_zone?

keys_zone 分配的内存只存储缓存 key 和元数据(例如访问次数、过期时间),不存在响应实体本身。1MB 共享内存 + 存 8000 个 key。如果您的业务每秒产生 100 个唯一 URL,按 1 小时内不重复计算,就是 36 万 key;按 1 天计算,就是 864 万 key — 此时 keys_zone=my_cache:1m 显然不足,会导致频繁淘汰 key,降低缓存命中率。

怎么算出实际需要的 keys_zone 大小

先确认你最关心的缓存粒度:是按 $uri?还是带完整 query 的 $scheme$host$uri$is_args$args?粒度越细,key 越多。再结合业务日志估算:

  • awk '{print $7}' access.log | sort -u | wc -l 粗略统计一天内独立 URI 数量
  • 若启用了 proxy_cache_key "$scheme$host$uri$is_args$args",再用 awk -F'"' '{print $2}' access.log | awk '{print $1,$2}' | sort -u | wc -l 估算带参数的唯一请求量
  • 把结果除以 8000,向上取整,就是所需 MB 数。
阅读全文
标签:NginxProxy