hi, all:
之前maillist提过,大神告诉我去用1.1的版本,现在1.2都出来了,这个bug还是在,正常情况出现几率很小,估计这也是大神没去改的原因,不过当我的max_fails值设置的比较小,同时后台服务器如果在做维护或更新的时候,出现这bug的几率感觉会被提升.
bug描述是这样的:
配置
upstream test {
server a max_fails=10 fail_timeout=10;
server b max_fails=20 fail_timeout=10;
server c max_fails=20 fail_timeout=10;
}
如果这个upstream内的服务器数量>=3, 比如上面b,c这两台都故障了,但是a服务器一直都是正常的(理论上应该客户端始终都能看到200响应),proxy_next_upstream种定义的错误积累达到或超过max_fails值,nginx会返回502或503错误给客户端.
这里具体超过max_fails值多少个,我测了好久,没看出什么规律,很多超过10个左右就会出现.
依照上面这个max_fails值,大概每27个请求中的最后一个请求会502.
如果max_fails值比较大,几率还是比较小的,但是如果我容错比较严格,而且我的proxy_next_upstream定义了包括http_502,http_504,http_503在内的多个错误申明,这样还是有较大可能就达到max_fails,同样出现N-1台全部故障的现象几率就上升了,加上我们有时候对后端做更新的时候会停掉后端的服务,一个做的不好就容易悲剧.
本次 我是做1.2.0版本测试的,1.0的版本以前测的也是有一样问题的