在生产环境使用nginx+tomcat做负载均衡。众所周知,tomcat的shutdown在生产环境是很慢的,如果这时候,不先修改nginx的upstream模块,先让要停止的那台tomcat成为shuotdown或者直接注释掉,而直接shutdown了tomcat的话,这样子,如果有刚好请求分配到了这个要停止的tomcat,就会导致用户的连接是一直等待中了.~~

nginx的负载均衡虽然会自动切换,但是默认情况下它会一直等待到那台tomcat完全shutdown了,才会将请求转交给另一台服务器.所以,才会导致用户请求一直在等待中.

建议

先在nginx配置文件里,注释掉要停止的tomcat的那台服务器的upstream 的iP配置,然后sudo nginx -s reload一下.

nginx负载均衡问题

还有个注意问题,使用ip_hash算法做均衡,还是有比较大问题(如果做了分布式session除外)并且如果没有做session共享,这样子用户会非常容易提示重新登录。

其实这个要根据网络运营商的具体情况,我自己就测试过所住的地方,IP是几秒钟变一次的,如果这时使用了ip_hash算法,还是很容易导致用户要不停的重新登录(如果没有用session,或者使用了session共享的,可以忽略这个问题)。