我们的设置是标准的nginx(ver 0.7.59)+ Debian lenny上的精简上游服务器。现在我们在网页/应用程序和1分贝框的1牛腩框。最近我们开始注意到最终会开始“挂起”,即他们将不再接收来自nginx的请求。我们有15个运行,10-15分钟后,第一个或第二个将被挂起。如果整天离开,那些相同的几个加上几个将继续挂起。我们目前唯一的解决方法是重新启动nginx。重新启动后,挂起的薄片马上会再次接收请求。正因为如此,看起来这些稀有物可能已经被排除在上游泳池之外。Nginx从池中删除上游服务器
如果我正确理解了文档(http://wiki.nginx.org/NginxHttpUpstreamModule#server),并使用默认值(我们有),如果nginx在10秒内无法与后端服务器“通信”3次,则会将该上游服务器设置为“无效“状态。然后等待10秒钟,然后再次尝试该服务器。这是有道理的,但我们无限期地看到了瘦身吊挂。我试图将max_fails设置为0,但这并没有帮助。我找不到会导致上游服务器永久“失效”的原因。
我们已经看到最近增长率的大幅增长,所以我们不确定它是否可以与此相关,或者由于更短时间内的更多流量而更加明显。
在nginx中是否还有其他的东西(一个可改变的指令或其他条件)会导致它将服务器完全移出池?
是的,我们会看到,之前,我忘了提,我们使用的公平代理平衡器插件(http://brainspl.at/articles/2007/11/09/a-fair- proxy-balancer-for-nginx-and-mongrel; http://wiki.nginx.org/NginxHttpUpstreamFairModule),它使用最不忙的算法而不是循环法。它运作良好,#request/thin甚至可以随时间变得非常接近。 我希望不必引入像HAProxy这样的其他图层,只要我们能够找出导致图层不再接收来自nginx的请求的原因。 那么nginx-ey-balancer基本上模仿了HAProxy的w/max H算法需要HAProxy? – 2009-08-31 16:45:54
是的,nginx-ey-balancer模仿HAProxy需要HAProxy的maxconn算法。这几乎是我们转向haproxy开始的全部原因,现在它只是我们架构的一部分。 – 2009-08-31 16:50:18
非常感谢您的帮助。想想我会尝试nginx-ey-balancer。虽然它只有nginx v 0.6.34/35和0.8.0的补丁。我会看看哪一个更接近0.7.59,并希望最好..或等到0.8.x稳定。 – 2009-08-31 17:00:07