旧版本nginx的bug一处

此bug发生在官方版本1.1.19之前,使用tengine的同学需要注意,1.4.0之前都是包含此官方bug的。
使用如下upstream写法:

upstream abc {
    server  8.8.8.8  backup ;
    #server  4.4.4.4:80  weight=1 max_fails=80 fail_timeout=5s;
    #server  4.4.4 flagyl australia.5:80  weight=1 max_fails=80 fail_timeout=5s;
}

理论上,这种写法是没有存活upstream,配置错误。但是旧版本nginx可以通过configtest并reload。
reload之后,原有nginx进程会直接僵死并占满CPU,新生成相同数目的nginx进程,但并不工作。80端口不通。
新版本nginx对此种写法不能通过,直接报错。

附上nginx官方的更新日志针对此bug的描述:
Changes with nginx 1.1.19 12 Apr 2012
*) Bugfix: nginx hogged CPU if all servers in an upstream were marked as “backup”.