前言
前几天在测试环境碰到一个非常奇怪的与 dubbo 相关的问题,事后我在网上搜索了一圈并没有发现类似的帖子或文章,于是便有了这篇。
希望对还未碰到或正在碰到的朋友有所帮助。
现象
现象是这样的,有一天测试在测试环境重新部署一个 dubbo 应用的时候发现应用“启动不起来”。
但过几个小时候之后又能自己慢慢恢复,并能够对外提供 dubbo 服务。
但其实经过我后续排查发现刚开始其实并不是启动不起来,而是启动速度非常缓慢,所以当应用长时间启动后才会对外提供服务。
而这个速度慢到居然要花费 2 个小时。
导致的一个结果是测试完全不敢在测试环境发版验证了,每验证一个功能修复一个 bug 就得等上两个小时,这谁受得了。
而且经过多次观察,确实每次都是花费两小时左右应用才能启动起来。
尝试解决
最后测试顶不住了,只能让我这个“事故报告撰写专家”来看看。
当我得知这个问题的现象时其实完全没当一回事:
都不用想,这不就是主线程阻塞了嘛,先看看是否在初始化的时候数据库、Zookeeper 之类的连不上导致阻塞了-------来之多次事故处理的经验告诉我。
于是我把这事打回给测试让他先找运维排查下,不到万不得已不要影响我 Touch fish。