记一次线上问题之:dubbo接口超时Invoke remote method timeout
问题背景:
有如下a、b、c、d、e 5个服务,不同服务间调用关系如下 a->b->c->d、d->c->b->c->d、e->b->c->d 等场景,且均为同步调用。
其中调用方式为: a<=dubbo=>b b<=dubbo=>c c<=https=>d e<=dubbo=>b
此项目应用于交通行业,所以存在早晚高峰。
现象:某天下午18:00-19:00 运维告警d服务大量http连接c超时。d->c超时
思考1:c的网络问题|c服务内存满导致内部线程阻塞|
经确认:不是上诉问题。
经检查日志发现c->b 存在dubbo超时,b->c 也存在dubbo超时。
思考2: 因为abce等大量内部服务注册在同一个zk集群,同时这个集群还担任了分布式配置中心的角色。而且zk为了保证 高吞吐量和低延迟 将数据保存在内存中。
因为节点过多导致zk内存问题。
经确认:zk集群正常。(这个在后续新增服务时,考虑新增zk集群)
思考3: Dubbo超时机制:https://blog.csdn.net/sihai12345/article/details/80152224
经确认:服务之间的超时时间配置一致,符合业务场景要求
思考4: c->d的超时时间设置了60s,而在d->c->b->c->d链路中,c->b 超时时间为12s,b->c超时时间为20s。
经过日志核实:因为c->d超时,导致上游b->c超时,进而c->b超时,进而d->c。。
经以上梳理:得出结论,改变c->d的http超时时间< b->c的dubbo超时时间< c->b的dubbo超时时间
我:
不是圣人,做不到舍己为人;
不是痴人,做不到废寝忘食;
不是废人,做不到食不果腹;
不是庸人,做不到无所事事;
是个俗人,有七情六欲;
是个男人,有责任担当;
是个小人,有自己算盘;
是个大人,有自我奉献。
我:
一个在矛盾中不断进步的年轻人。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异