开发者社区 > 云原生 > 正文

Dubbo/Dubbo-go中我们最近线上一直报 session Already Closed 错?

Dubbo/Dubbo-go中我们最近线上一直报 session Already Closed 错误。麻烦帮看下是什么问题?情况是这样,服务A 会调用 服务B,如果 服务B 停掉后,服务A 还会继续调用已经下掉的 服务B,就会一直报 session Already Closed 错误。

展开
收起
cuicuicuic 2023-06-05 18:47:11 148 0
3 条回答
写回答
取消 提交回答
  • 根据您的描述,该错误可能是由于 Dubbo/Dubbo-go 底层的连接管理机制导致的。

    当服务消费者在调用提供者的过程中,底层会创建一个长连接(session)来维护服务调用的状态,如果这个长连接因为网络或者服务提供者的异常而断开,那么在下一次服务调用时会报错。

    对于您遇到的这种情况,可以考虑以下解决方案:

    配置连接池:Dubbo/Dubbo-go 提供了连接池的配置项,可以通过配置连接池大小和最大链接数等参数,来控制并发连接数和资源利用率,减少因频繁建立连接造成的性能问题。 增加重试次数:可以通过增加 Dubbo/Dubbo-go 的重试次数来应对网络不稳定和服务不可用等问题,避免因为单次 RPC 调用失败而导致的错误。 实现熔断器机制:熔断器可以在出现异常请求或者服务不可用时,暂停调用服务并等待一段时间后再重试,从而避免因为调用频率过高而导致服务崩溃的问题。 最后,需要注意的是,由于 Dubbo 和 Dubbo-go 的实现机制略有不同,针对具体的异常情况需要结合代码和日志进行深入排查和分析。

    2023-06-06 09:01:56
    赞同 展开评论 打赏
  • 服务B已经下掉了,提示“session Already Closed”也没问题吧? 不然应该提示什么错误 ?正常情况,B服务下线后,优雅下线会通知到B服务,告知其B服务已下线,这后面按说A服务就不会再调用B服务了。dubbogo的实现没看 dubbo的是从注册中心摘掉 然后一定时间内处理存量还在请求B的连接 最后B再关闭吧,此回答整理自钉群“dubbogo社区1”

    2023-06-05 19:08:49
    赞同 展开评论 打赏
  • 在 Dubbo / Dubbo-go 中出现“session already closed”错误通常是因为 Dubbo 的连接池中缓存的连接已经被关闭,但是在用户代码中仍在使用这些连接。解决这个问题需要通过以下几个步骤来进行排查:

    确认是否存在服务提供者的异常或故障。在您的情况下,错误发生在服务发现层面。您需要确认服务 B 的状态是否正确,或者是否存在其他可能导致服务不能正常工作的原因。 确认 Dubbo / Dubbo-go 的配置是否正确。您需要确认 Dubbo / Dubbo-go 的重试策略和超时配置是否合理,以便在服务出现故障或连接关闭的情况下,正确地进行重试或强制关闭连接。 确认您的代码中是否存在资源泄漏。您需要检查代码中是否存在不正确的异常捕获或忘记关闭资源的情况,并及时修复该问题。 确认 Dubbo / Dubbo-go 的连接池是否正确。您需要检查 Dubbo / Dubbo-go 的连接池配置,并确认连接池是否设置得合理。例如,如果连接池过小,可能会导致连接关闭并重新创建过于频繁,如果连接池过大,会浪费过多的资源。

    总之,排查“session already closed”问题需要全面分析,并结合 Dubbo / Dubbo-go 的配置和代码来进行排查。在解决问题之前,建议您先学习 Dubbo / Dubbo-go 的基本原理和使用方法,并查看 Dubbo / Dubbo-go 的日志文件以获取更多信息。另外,如果您遇到了难以解决的问题,可以联系阿里云官方技术支持人员获取帮助。

    2023-06-05 19:08:50
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
Dubbo开源现状与2.7规划 立即下载
Dubbo分布式服务治理实战 立即下载
《Dubbo 3.0 前瞻》 立即下载