光油没有明显的原因间歇性地失效

在过去的几年中,我们一直运行Varnish作为caching和负载均衡器,在服务于数千个网站的几台Apache服务器之前。

我们还使用monit来确保如果清漆死亡,它会重新启动。 monitrc中的清漆部分如下所示:

# Check varnish on port 80 check process varnish with pidfile /var/run/varnishd.pid start program = "/etc/init.d/varnish start" stop program = "/etc/init.d/varnish stop" if failed host 127.0.0.1 port 80 protocol http and request "/monit-check-url" then restart 

这至less可以工作3年。 80端口检查偶尔会出现故障,但monit会重新启动清漆,用户通常不会察觉。

但是,在过去的几个星期里,我们看到了这些失败的风险,通常在几个小时的时间里,用户注意到连接失败。 今天特别糟糕。

在系统日志中没有任何线索(这是一个debian框btw)的build议“光油崩溃”部分: https : //www.varnish-cache.org/docs/3.0/tutorial/troubleshooting.html和我们看到的所有有监测端口80检查,然后停止和启动清漆。

另外,我们没有看到带宽的上升或后端Web服务器的点击次数,这表明它在高于正常负载的情况下失败。

我们正在运行光油3.0.3,我升级到3.0.7,但问题仍在继续。 这个箱子没有做任何其他的改变,这个改变与开始的问题是一致的,而且在很长一段时间里漆的configuration没有改变。

有没有人有类似的经验与清漆或有任何解决这个问题的build议? 会不会是某种攻击?

任何帮助或build议非常感谢!

在这里,你的方法似乎有些过分,因为请求失败的原因有很多,而不是全部都是清漆问题(例如,连接问题,后端故障等)。重新启动清漆会导致中断,同时又重新启动应该只能作为最后的手段。

在重启任何东西之前,我build议在varnish框上运行varnishadm debug.health来查看你的后端所处的状态。根据结果,你可以决定进一步的位置:

  1. 如果后端被认为是不健康的,那么问题在于清漆和后端(或后端本身)之间。 检查networking到后端,加上后端的任何监控。
  2. 如果后端被认为是健康的,那么问题就出在monit和varnish之间。 检查networking到清漆服务器,加上debugging监控本身。
  3. 如果varnishadm进程无法build立连接,那么问题在于清漆本身。 检查哪些清漆进程正在运行,并查看日志中清漆的任何错误消息。