在高流量中清漆高DB连接

时间:2013-07-05 06:40:44

标签: mysql apache caching varnish varnish-vcl

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

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

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

问题是为什么后端连接会因流量而飙升?这肯定是Varnish应该阻止的。我假设我们在配置中出了问题,但无法找到有关我们可以更新的内容的帮助,以防止在高流量时绕过清漆这么多请求。

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

大部分尖端后端连接与您的清漆配置关系不大,但与您网站的可配置性有很大关系。

  • 是否存在阻止您有效缓存的Cookie?您可以选择去除它们或删除所有选择的,但在清漆网站上有两个示例。
  • 做一个varnishstat并检查峰值期间的命中率。这是一个很好的缓存命中率吗?是否与低负荷时相同?如果它在低负载时相同或更高,则可以随时轻松改进它。
  • 执行varnishtop -i txurl以查看最频繁发送到后端服务器的请求。也许是因为错误的标题而没有缓存的一些URL?也许某些页面可以缓存更长时间?也许可以使用ESI缓存页面的某些部分?
  • 确保您的清漆在峰值期间没有崩溃(留下空缓存)。您可以通过cat syslog | grep "varnish"
  • 查看崩溃信息