问题排查_服务调用失败
背景: 1)中间件应用集群CLUSTER A,部署有服务svr_a和svr_b。 2)GateWay 3)集群CLUSTER B GateWay与CLUSTER B之间通过域进行连接,CLUSTER B将svr_c服务export到GateWay。 svr_b为一个WSL客户端,svr_a调用...
背景:
1)中间件应用集群CLUSTER A,部署有服务svr_a和svr_b。
2)GateWay
3)集群CLUSTER B
GateWay与CLUSTER B之间通过域进行连接,CLUSTER B将svr_c服务export到GateWay。
svr_b为一个WSL客户端,svr_a调用svr_b,通过svr_b调用GateWay上import的服务。
问题:
理论上svr_a被调用后,应该能正常调用到CLUSTER B的svr_c服务,但实际并不成功。
排查:
1)首先查看错误日志和TRACE日志,发现错误日志中报svr_a服务错误,tperrno=11,tperrtext=TPESVCFAIL。
2)因为这套环境是新搭建的一套环境,所以重点排查系统与系统之间交互的情况。
3)集群机器比较多,为了便于排查,停掉集群中其他节点的server,只留最少的节点数和server数。
4)采用从svr_a发起检查,因为之前GateWay比较容易出问题,所以重点检查GateWay,采用检查调用次数的方法。理论上每调一次svr_a服务,svr_b和svr_c都应该加1才对。但是svr_a服务被调用后,发现GateWay上服务的调用次数并没有加1。所以可以排除CLUSTER B的问题,也可以排除GateWay与CLUSTER B之间链路的问题。继续排查CLUSTER A和GateWay和两者之间链路。
5)怀疑有没有可能是配置文件的问题,但是与生产系统配置逐一比对后发现没有问题。
6)因为注意到svr_b的调用次数一直是0,突然来了个想法,就是如果把svr_b也停掉会是什么情况呢?停掉之后,发现svr_a还是报TPESVCFAIL错误,如果想要调用的服务不存在,应该报TPENOENTRY错误才对,既然没报这个错,那么可以说明跟svr_b没有关系,跟svr_a和svr_b之间也没有关系,只可能是svr_a的问题。
7)检查svr_a,发现跟生产服务器的文件大小都不一样。。。基本找到问题所在了,将svr_a与生产系统同步后,问题解决。
更多推荐
所有评论(0)