0

我们正在运行一个 API,该 API 有时在某些时期会遇到非常繁忙的流量。在正常情况下使用 varnishstat 我们可以看到需要 0 个后端连接。我们将此解释为 Varnish 能够成功地提供缓存中的所有数据。

当流量激增时,我们会看到后端连接激增,这反过来又打开了数据库连接,导致数据库资源激增。Varnish 似乎在高流量时被绕过了。

我们调整了 MySQL 中的 max_connections 设置并调整了两个 varnish 配置文件。我们使用 4 个线程池运行,最少 200 个线程,最多 4000 个线程。我们为清漆分配了大量内存(15GB 中的 8GB)。

问题是为什么后端连接会随着流量激增?这肯定是 Varnish 应该防止的。我假设我们的配置有问题,但无法找到关于我们可以更新什么以防止在高流量中绕过清漆的请求的帮助。

任何帮助表示赞赏

4

1 回答 1

2

大多数峰值后端连接与您的清漆配置无关,但与您网站的可缓存性有很大关系。

  • 是否存在阻止您有效缓存的 cookie?您可以选择剥离它们或删除所有未选择的,在清漆网站上都有示例。
  • 做一个 varnishstat 并检查你在高峰期的命中率。这是一个很好的缓存命中率吗?和低负载时一样吗?如果它在低负载下相同或更高,则随时可以轻松改进它。
  • 执行 avarnishtop -i txurl查看最常发送到后端服务器的请求。也许是一些由于错误的标头而没有缓存的 URL?也许某些页面可以缓存更长的时间?也许页面的某些部分可以用 ESI 缓存?
  • 确保您的清漆在高峰期不会崩溃(留下空缓存)。您可以通过 a 查看崩溃信息cat syslog | grep "varnish"
于 2013-07-05T07:32:25.163 回答