接昨天的分析。首先昨天分析了在600秒出现线程阻塞和挂起的时候,再等待了900秒出现连接超时,因此从时间上看是1500秒超时。为了印证这个假设,我们将Read Time out的时间修改为400秒,那么就应该是1300秒报出服务超时的异常错误,但是最终测试的结果仍然是1500秒超时。
对于该超时,在OSB集群侧没有任何5分钟超时的设置,而检查F5负载均衡的超时配置文档可以看到,F5负载均衡设备上有一个idle time out的超时设置,默认就是300秒。因此为了解决该问题,首先还是要确定是否和负载均衡设备有关系。
对于当前的服务调用,需要通过经过ESB服务集群,业务系统的服务集群,才能够完成。如下:
即整个服务请求的调用过程是为1->2->3->4的顺序,需要同时经过1和3两个负载均衡设备。那么整个服务调用超时就和1,2,3,4四个节点的配置都会相关。因此为了进一步进行验证,我们尝试对如下路径直接调用以排查问题。
1. 不走业务系统的负载均衡 1-2-4路径调用
在该模式下通过管控系统和通过SOAPUI分别进行调用测试。发现整体调用能够成功,有成功的实例返回。对于通过管控调用的时候会出现有重试的现象,但是通过SOAPUI调用的时候没有发现重试。
其次对于客户端调用仍然会出现5分钟调用超时,返回Connection Reset的错误。但是这个时候实际上服务仍然还运行,即2-4的连接仍然在运行并能够成功运行完,因此可以看到成功的服务运行实例数据。
2. 不走ESB和业务系统两边的集群,走2-4直接进行接口服务调用。
在该模式下,我们通过SOAPUI对接口服务进行调用测试,能够成功调用,有成功的实例返回,同时对于客户端也可能得到成功的返回信息。即既有成功的实例,客户端也返回成功。即我们希望达到的一个结果。
3. 走两边的集群模式 1-2-3-4路径进行调用
这个即是最初的调用模式,我们还是使用SOAPUI进行调用,发现会出现调用重试,同时最终服务运行失败,报1500秒的超时错误。在客户端也会报出连接超时错误。即和我们最初看的现象是一致的。但是具体为何会发起5分钟后的重试,以及是否该重试是由负载均衡设备发起的暂时不明确。
在负载均衡上面,我们看到有tcp_tw_recycle参数配置,但是暂时不确定自动触发重试是否和该参数的设置有关系,从网上文章来看是不建议对该参数配置进行启用。
参考: http://www.cnblogs.com/jdonson/p/4760080.html
该超时问题经过分析,基本确定是负载均衡的超时设置引起的,因此解决就简单的,即对两个集群对应的负载均衡超时设置都进行调整,同时确保该超时时间>OSB服务配置中的Read Time out时间即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- dubbo之timeout超时分析
- 源码分析context的超时及关闭实现
- 携程容器偶发性超时问题案例分析(一)
- PostgreSQL pg_ctl start超时分析
- PostgreSQL pg_ctl start超时分析
- wifidog源码分析Lighttpd1.4.20源码分析之fdevent系统(4) -----连接socket的处理与超时处理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
函数式算法设计珠玑
Richard Bird / 苏统华、孙芳媛、郝文超、徐琴 / 机械工业出版社 / 2017-4-1 / 69.00
本书采用完全崭新的方式介绍算法设计。全书由30个珠玑构成,每个珠玑单独列为一章,用于解决一个特定编程问题。这些问题的出处五花八门,有的来自游戏或拼图,有的是有趣的组合任务,还有的是散落于数据压缩及字串匹配等领域的更为熟悉的算法。每个珠玑以使用函数式编程语言Haskell对问题进行描述作为开始,每个解答均是诉诸于函数式编程法则从问题表述中计算得到。本书适用于那些喜欢学习算法设计思想的函数式编程人员、......一起来看看 《函数式算法设计珠玑》 这本书的介绍吧!