旧版本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”.