在过去的几年中,我们一直运行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来查看你的后端所处的状态。根据结果,你可以决定进一步的位置: