赞
踩
2个tomcat上部署的是相同的应用,由于用户现场要求不可为单机,简单的类似于做了一个集群。
但是在一个特定的页面访问时出现了一个问题:页面一直在不断的刷新,在不停的访问页面。但看起来似乎在跳转到其他的URL下,但是页面还是显示的此页面。
问题定位:
1.怀疑可能是开发给的程序包存在问题。
2.页面刷新机制存在问题。
3.集群问题。
4.代理(nginx)配置问题。
问题分析:
1.若是代码存在问题,需要和开发对接,于是联系开发同事,确认包是否有问题。当然得到的答案是开发不会存在问题,而且他们在测试环境中测试也没有此问题。但是为什么生产环境上就会存在此问题呢
2.页面刷新机制和开发对接了下,确认在这个访问的页面确实加入了刷新的机制,但是不是实时刷新,那为什么呢?
好,排除了前2项,在考虑3,4可能的问题。
问题排查思路:
1.确认是否是集群的问题导致
(1)停止掉1台tomcat服务----访问页面----我们发现页面可以访问到,而且页面是静止的,不在一直刷新。
(2)启动停止掉的tomcat服务----访问页面----又开始不断的刷屏
确认是集群导致的问题。
2.既然是集群导致的问题,那么我们是由nginx进行配置的代理。那会不会是nginx配置处不对呢??
查看配置文件:
代理位置配置如下:
upstream skyfanserver {
server 127.0.0.1:8080 weight=1 max_fails=3 fail_timeout=10s;
server 127.0.0.2:8080 weight=1 max_fails=3 fail_timeout=10s;
}
根据实际现场情况分析可能是nginx配置存在问题,于是想到了ip_hash的问题。
查了下资料显示:Nginx中的ip_hash技术能够将某个ip 的请求定向到同一台后端web机器中,这样一来这个ip 下的客户端和某个后端 web机器就能建立起稳固的session。
那么我们页面不断的熟悉是不是由于没有建立固定的session加上页面的刷新机制导致的呢?
好那么我们就来试下
配置文件修改为:
upstream skyfanserver {
ip_hash;#注意:添加了此行内容!!!!!!!!
server 127.0.0.1:8080 weight=1 max_fails=3 fail_timeout=10s;
server 127.0.0.2:8080 weight=1 max_fails=3 fail_timeout=10s;
}
再次重新启动nginx。
nginx -s reload
在浏览器上访问页面,查看,嗯,解决了,页面不在一直刷新了!!!!OK,问题解决!!!!!
有想进一步了解Nginx的负载均衡机制及算法的可以查看我的博客nginx4种负载均衡算法速记及详解
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。