现象:点击功能B不成功,过了一会在,整个系统反应很慢。
架构:dubbo zookeeper tomcat mysql
诊断过程:
1.检查应用日志,发现了功能B的很多锁超时,在mysql数据库中发现了锁等待,kill堵塞者之后,系统恢复正常,且功能B也能正常。但过1小时后,问题又出现了。
2.无意发现操作功能A失败,会导致功能B失败,系统慢。重复几次,每次必现。从堵塞的SQL来看,它们都update TABA,检查应用日志,没有发现功能A相关的错误日志。
3.用chrome F12操作功能A,且把Tomcat的日志级别打到info,重要在应用的日志里面发现功能A的一个远程调用反复重试。
4.一切都明了了,由于功能A中修改TABA,代码走到远程调用的时候不同,程序hang在这里,导致功能B锁等待严重。
5.发现远程的服务宕机了,在调用远程服务的时候加上超时时间,解决诊断的困局。