接口远程调用超时问题
(单机事务调用单机事物的远程接口,会死锁,并且阿里云监控不到。)
排查步骤:
1.debug调试,获取远程接口调用的入参。使用入参去调用远程接口。结论:无法复现bug
2 .查看线上日志,异常信息是feign超时。推测是feign单节点不支持容错,节点心跳监测没通过,直接被踢掉,没有其他可用服务器,就一直等待。解决办法:增加负载,启用多节点。(问题没有解决)
3.debug直连线上,关闭其他服务器。直接抓取线上执行过程,断点一步一步执行。结论:无法复现bug
4.增加错误日志内容,恢复线上服务。kbn抓去线上日志信息。发现mysql有lock。推测事务死锁。检查代码发现:远程调用方与被调用方都有单节点事务,并且都操作mysql想同行。行锁冲突造成死群。解决方案,采用分布式事务seata代替单点事务。问题解决