一 背景
购物车依赖推荐的dubbo接口,推荐服务每天凌晨3点会批量下线推荐dubbo服务,全量更新商品,更新完以后在执行上线操作,每天凌晨3点10分左右,购物车工程都会出现5000左右的connection timeout error。正常依赖的dubbo服务工程在启动的时候,消费端会经常出现connection timeout error。
二 问题排查
遇到问题之后,sa,中间件开发,推荐开发,购物车开发等拉群排查问题,分析影响面。
dubbo源码分析
总结:推荐服务上线之后,消费端收到zookeeper通知,会主动拉取推荐dubbo服务的URL信息。消费端拿到URL信息后,如果connections不配置,则共享连接,否则每服务每连接,然后将该服务URL和clinets列表封装成一个DubboInvoker对象。如果connection timeout下次会重试。
哨兵监控分析
我们发现在connection timeout error出现的时候,推荐服务器
TcpExtListenOverflows,TcpExtListenDrops指标异常。
TcpExtListenDrops(监听队列连接丢弃数)和 TcpExtListenOverflows(监听队列连接溢出数):
- ListenOverflows:3次握手之后进入Accept Queue,如果Accept Queue满了,队列溢出连接就会丢弃,TcpExtListenOverflows值增加1;
- ListenDrops:包含上面的情况,也就是说当出现ListenOverflows时,它也会增加1;除此之外,当内存不够无法为新的连接分配socket相关的数据结构时,也会增加1,当然还有别的异常情况下会增加1。
Accept Queue 的队列长度是由程序的backlog和系统参数net.core.somaxconn共同设置,当backlog的值大于系统设置的net.core.somaxconn时则取net.core.somaxconn的值,否则取程序设置的backlog值。
总结:net.core.somaxconn默认值是128,dubbo backlog目前1024, min(net.core.somaxconn, backlog) = 128。推荐一个服务的提供者的消费者就由1600多,推荐服务一上线,消费者都是第一时间去建立连接,导致Accept Queue溢出。
参考:
SYN packet handling in the wild
三 解决问题
问题已经分析完成,解决的思路:
- 增加云主机net.core.somaxconn值和dubbo backlog值。
- 修改dubbo源码,服务提供者一上线,消费者延迟随机时间之后去建立连接。
目前所有云主机同步参数net.core.somaxconn调整到2048,dubbo backlog默认值还是1024,需要压测确定具体值,connection timeout error已经由原先的6000降低到200,connection timeout之后会重试连接,不会影响业务功能。
- 大小: 129.5 KB
- 大小: 225.3 KB
- 大小: 37.3 KB
- 大小: 56.7 KB
- 大小: 111.2 KB
分享到:
相关推荐
springboot+dubbo timeout retries 验证 原文地址 https://blog.csdn.net/u013151053/article/details/116949588
### 当DUBBO遇上Arthas-排查问题的实践 #### 概述 在现代微服务架构中,Dubbo作为一款高性能、轻量级的开源RPC框架,被广泛应用于服务治理领域。然而,在复杂的生产环境中,不可避免地会遇到各种各样的问题。此时...
此外,还可以通过Dubbo-admin进行故障排查,查看调用链路,分析性能瓶颈。 3. **Dubbo-demo**: 示例项目通常会展示Dubbo的基本用法,例如如何创建服务提供者和服务消费者,如何配置服务接口和实现,如何进行服务...
记一次Dubbo超时&CPU高负载问题排查 1.问题背景 最近经常有同事反馈我们灰度环境老的交易系统,这里简称trade,dubbo消费者调用其他服务超时,因为该项目维护人员众多,加上灰度环境发布较多,一直没有排查,然后...
Dubbo之《尚硅谷》学习笔记
<dubbo:registry address="zookeeper://172.16.61.101:2181" timeout="500000" group="JhdGroup" id="myjhd_id"/> <!-- 暴露出去的接口--> <bean id="dubboDemoFacade" class="com.dubbo.demo.facade.impl....
【标题】"dubbo admin jdk1.8" 指的是使用Java开发工具包(JDK)1.8版本运行的Dubbo管理控制台。Dubbo是阿里巴巴开源的一个高...同时,了解如何正确配置和使用Dubbo Admin,有助于提升微服务的运维效率和问题排查能力。
【Dubbo 示例代码详解】 Dubbo 是阿里巴巴开源的一款高性能、轻量级的Java服务治理框架,它主要提供了RPC(远程过程调用)服务,并且包含了服务注册与发现、负载均衡、容错处理、监控等全面的服务治理功能。本示例...
【标题】"incubator-dubbo-dubbo-2.6.1" 是一个Apache Incubator项目Dubbo的特定版本,这里的2.6.1表示该版本是Dubbo的稳定分支之一。 【描述】提到的"incubator-dubbo-dubbo-2.6.1"表明这是Apache孵化器中的Dubbo...
dubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo-2.7.3.rardubbo源码dubbo-dubbo...
6. **故障排查**:如果在下载、安装或运行过程中遇到问题,可以查阅Dubbo的官方文档,社区论坛,或者在线搜索解决方案。社区通常会提供很多关于常见问题的解答和最佳实践。 总的来说,成功下载和运行dubbo-admin...
Dubbo-Admin更注重服务的日常管理和配置,而Dubbo-Monitor则专注于性能监控和故障排查。 **Dubbo-Monitor的核心功能** 1. **服务监控**:Dubbo-Monitor可以显示服务的调用次数、调用成功率、平均响应时间等关键...
《Dubbo 2.5.6与Java 1.8的兼容性问题解析》 Dubbo,作为阿里巴巴开源的一款高性能、轻量级的服务治理框架,广泛应用于分布式系统中。而Java,作为服务端开发的基石,其版本选择直接影响到框架的运行效果。本篇文章...
5. **故障排查**:当系统出现异常时,dubbo-admin可以帮助快速定位问题,通过日志查看、调用链跟踪等功能进行故障排查。 总的来说,"incubator-dubbo-dubbo-2.5.8" 提供了一个完整的解决方案,涵盖了分布式服务的...
【标题】"dubbo-admin 2.6 dubbo monitor"涉及的是Dubbo框架的一个关键组件——Dubbo Admin,这是用于监控服务治理的2.6版本。这个组件是Dubbo生态系统中的重要部分,它提供了可视化界面,帮助开发者和运维人员监控...
dubbo.consumer.timeout=3000 ``` 4. **其他高级配置**:还可以根据实际需求调整日志级别、监控中心地址、线程池大小等参数。 正确配置完成后,只需启动Dubbo-Admin,便可以在Web界面中看到注册中心中的所有服务...
前段时间排查某问题的时候,想要快速知道某些dubbo接口(三无)的响应结果,但不想启动项目(因为这些项目不是你负责的,不会部署而且超级笨重),也不想新建一个dubbo客户端项目(占地方),也不想开telnet客户端...
在开发Java应用,尤其是使用Apache Dubbo作为服务治理框架时,可能会遇到Eclipse IDE报找不到`dubbo.xsd`的问题。`dubbo.xsd`是Dubbo服务配置的XML schema定义文件,它定义了Dubbo配置文件的结构和规则。当Eclipse在...
接着,`dubbo.xsd`中的`<dubbo:reference>`元素则用于声明服务消费者,它包含了与`<dubbo:service>`类似的属性,但更多的是消费者端的配置,如timeout、retries、loadbalance等,这些参数直接影响到服务调用的性能和...
本文将详细解析"标题"和"描述"中提到的"Dubbo.xsd"文件及其在解决Dubbo标签识别问题中的作用。 首先,我们需要理解XML Schema(简称XSD),它是一种用于定义XML文档结构和数据类型的规范。XSD文件定义了XML元素、...