【问题标题】:google CDN eviction is too aggressive?谷歌 CDN 驱逐过于激进?
【发布时间】:2019-12-11 02:45:41
【问题描述】:

我将 google CDN 与 google 负载均衡器一起使用,它有一些后端服务,每个服务都有不同的 google CDN 设置,如下所示。

service A: google CDN disabled (API server)
service B: google CDN enabled, 1day (Cache-Control: public, max-age=86400), cache-key: full URL
service C: google CDN enabled, 1year (Cache-Control: public, max-age=31536000), cache-key: full URL

问题是,service C 收到来自 google 负载平衡器的请求,昨天已请求该 URL 并正确处理。 (status 200, with Cache-Control header and Content-Length)

它并不总是发生,例如,在从我们的服务器返回响应之后,谷歌负载均衡器返回响应而不进行查询。但大约一天过去了,他们又开始问了。请注意,我提出了几乎相同的地理位置。

经过一番谷歌搜索后,我已经在 SO 上找到了以下链接,上面说 google CDN 积极驱逐其内容(总共只有 10MB 缓存大小), https://stackoverflow.com/a/54031267/1982282

而且 google CDN 不保证尊重 max-age。 Google Cloud CDN ignores max-age over 3600

但上述问题的原因是,真的是这种激进的驱逐吗?

实际上,我们的服务器仍处于开发阶段,因此没有大量流量,总缓存大小也只有 10MB 左右。但以我个人的感觉,我无法相信谷歌 CDN 会如此努力地驱逐内容(在 1 天内,10MB+ 大小)。

有人可以分享您关于 google CDN 驱逐率的经验吗?

问候,

【问题讨论】:

  • 大多数 CDN 将驱逐一天内仅访问几次的内容,如果不是更早的话,因为 CDN 缓存旨在以接近容量的方式运行。如果您的内容不公开/其他人没有访问它,您会发现它很快就被驱逐了。这通常适用于您只是测试事物并且只有您在访问它时。请注意,总缓存大小不是 10MB - 链接的答案可能已经解释了对象的最大大小(旧网络服务器为 10MB,这很少见!)。几乎所有现代网络服务器都支持 Range 请求,这意味着每个对象的最大大小为 5TB。

标签: google-cloud-cdn


【解决方案1】:

简而言之,CDN 缓存内容和缓存命中率受几个独立因素的影响,特别是缓存内容驱逐、内容过期、用户请求强度和大小。除此之外,Cloud CDN 还可以发起其他请求作为缓存算法的一部分:即验证请求和字节范围请求。

因此,您不应期望通过调整单个参数(例如 max-age)来停止对源服务器的请求。

正如 Google Cloud CDN 文档所述,

对于要从缓存中提供的内容,它必须已被插入 进入缓存,不能被驱逐,不能过期。

被驱逐的内容可能已过期,也可能不会。设置一个 过期时间不影响驱逐。

随着缓存接收更多流量,它们也会驱逐更多缓存内容。

由于缓存的性质,无法预测特定请求是否会在缓存之外提供服务。

关于缓存内容的任何类型的“积极驱逐”都是相当不正确的。 Cloud CDN 缓存的行为与应有的完全一样。此处清楚地描述了此行为:

Google Cloud CDN: Overview

Google Cloud CDN: Caching Details

本文档还解释了此处提到的关于该问题的另外两个“问题”。

【讨论】:

  • 感谢您的建议。但是正如我在问题中所写的那样,我理解不可能通过 max-age 或其他东西来完美地控制缓存过期(我也已经阅读过建议的链接),但是与 Cloudfront 等其他 CDN 相比,谷歌 CDN 似乎使缓存过期过早,所以我想知道其他人的经验,特别是生产环境的行为是否相同,这比开发环境有很多访问权限。如果其他人在 prod 中也有相同的 1yr-max-age 缓存持续时间,这意味着我们只需要尝试使用其他人,这是“不那么激进”。
猜你喜欢
  • 1970-01-01
  • 2020-09-10
  • 2011-09-19
  • 2014-07-01
  • 2018-12-11
  • 2017-12-03
  • 2011-03-01
  • 2017-01-20
  • 1970-01-01
相关资源
最近更新 更多