`
fredlong
  • 浏览: 135027 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于RPC事务过载保护

阅读更多
最近系统出现一个问题,少量Proxy出现故障,群组消息应用服务器会出现内存资源不够导致的崩溃的情况。我们对每个worker做了过载的保护,并且对每个worker的内存使用做了限制。从抓下来的dump来看,内存中的sipc对象占用了过多内存导致的崩溃。sipc请求对象在内存中的数量远远超过设置的数量,说明过载没有起到作用。

现场描述:
群消息服务器会访问多台Proxy给同的用户下行消息。
坏了两台proxy。
群组消息应用worker与zookeeper断掉连接,没有任何请求过来从proxy过来。内存占用设定的2.4G,每颗cpu在20%左右,正常地对进程抓dump抓不下来,得加-F参数。kill进程的操作,需要一段时间后,进程才会消失。


事故原因分析:
SipcHost在做过载保护的机制是这样的:
Sipc请求进来的时候,计数器加1,Sipc应答的时候,计数器减1;
计数器如果到达阈值,对于新请求,直接返回server busy;

但是目前上线的很多应答无内容的应用为了快速响应客户端的请求,都是直接发送应答之后再开始做业务逻辑,群消息就是个典型的例子,先给客户端reponse,再做群消息的分发。

SipcHost的线程池使用的是 java.util.concurrent.Executors.newFixedThreadPool(int nThreads),而这个线程池使用的是无容量限制的LinkedBlockingQueue。

基于以上三点,群消息在做消息分发的时候由于proxy的问题RPC消息发不下去,进入RPC重试机制;由于群消息快速reponse了,所以群消息的Sipc计数器一直为一个比较小的值,群消息的请求一直会进入到SipcHost的Queue中,最终导致内存被使用完毕,所有的线程被hang死。



经验总结:
尽量不要使用计数器做过载保护,因为计数器由于应用多使用异步的原因,不能准确判断事务是否完成,只能根据应用的response来计数,不是很准确。建议使用有一定容量的queue的线程池,queue满了直接报busy来做过载保护。
0
4
分享到:
评论

相关推荐

    SpringCloudAlibaba项目框架搭建详细过程

    Sentinel是阿里开源的流量控制组件,用于保护系统免受过载影响。在微服务架构中,Sentinel可以实现流控策略(如线程数限流、RT限流、异常比例限流等)、熔断降级以及系统自适应保护。我们需要在服务中引入Sentinel...

    Springcloud Alibaba-2020微服务详解

    Springcloud Alibaba是阿里巴巴提供的一个全面的微服务解决方案,它集成了众多优秀的开源项目,如Nacos(服务注册与发现)、Sentinel(流量控制与熔断)、Dubbo(高性能RPC框架)、Seata(分布式事务处理)等,构建...

    北邮高级操作系统2013年试题

    3. **负载迁移**:当某些节点过载时,将部分负载转移到较为空闲的节点上。 #### 影响动态平衡算法效率的因素 - **负载变化的速度**:如果负载变化迅速,则需要更频繁地调整。 - **负载预测的准确性**:准确预测未来...

    58到家分布式服务框架.zip

    总结,58到家的分布式服务框架是基于微服务理念设计的,采用了服务注册与发现、服务治理、RPC框架、分布式事务、消息队列等多种技术手段,构建了一个高度可扩展、高可用的系统架构。这套框架不仅保证了服务的质量,...

    阿里巴巴springcloud全家桶项目

    例如,Nacos可以用来做服务发现,Sentinel则可以保护系统免受过载的影响,Seata解决分布式事务难题,而Dubbo则负责服务间的通信。通过Spring Cloud Gateway,我们可以统一处理所有对外的请求,实现API的统一管理。...

    Spring Cloud Alibaba全套学习资料(包含源码、学习文档以及所需要的工具)

    Sentinel能够帮助系统抵御过载流量,保障服务稳定性。 4. **Seata**:全分布式事务解决方案,解决了在分布式环境下事务的一致性问题。Seata支持AT、TCC等多种事务模式,使得分布式事务的处理变得简单。 5. **...

    Java_Spring Cloud阿里云为阿里中间件的分布式解决方案提供一站式的应用开发解决方案.zip

    它可以帮助开发者保护系统免受过载的影响,确保服务的稳定性。Sentinel提供了丰富的流量控制策略,如固定窗口、滑动窗口、漏桶、令牌桶等,并支持动态规则调整。 3. **Dubbo**:作为经典的RPC框架,Dubbo在Spring ...

    2023 SpringCloudAlibaba分布式微服务 物流系统 实战视频教程 下载 因为太大存百度云盘4.zip

    3. **Sentinel流量控制**:Sentinel是阿里开源的流量控制组件,它提供了一种动态流量控制的机制,以保护系统免受过载影响。教程将教授如何在物流系统中设置Sentinel规则,实现熔断、降级和限流策略。 4. **Seata...

    微服务spring cloud alibaba

    Sentinel则负责保护各个服务的稳定,防止过载;Seata保证跨服务的事务一致性;而RocketMQ则可以用来处理异步任务,如发送通知、处理后台数据统计等。 微服务Spring Cloud Alibaba的实施,不仅简化了开发流程,还...

    面试题,收录一些常用以及微服面试题

    - 熔断:当服务因过载导致响应缓慢或无法响应时,暂时停止调用,防止整个系统的连锁故障。 - 服务降级:在高负载情况下,牺牲非核心功能以保证核心服务的稳定运行。 11. **微服务的优缺点**: - 优点:模块化...

    SpringCloudAlibaba思维导图

    SpringCloudAlibaba提供了诸如Nacos(服务发现与配置管理)、Dubbo(高性能RPC框架)、Sentinel(流量控制与熔断降级)、Seata(分布式事务解决方案)等一系列微服务治理工具。这些组件共同构建了一个完整的微服务...

    分布式服务框架原理与实践_李林锋著 清晰 带目录

    它能确保请求均匀地分布到各个服务实例,避免某一个实例过载。书中可能讨论了轮询、随机、最少连接数等负载均衡算法,以及如何在服务框架中实现这些策略。 容错处理是分布式系统必不可少的部分,包括熔断、降级和...

    一个使用SpringCloud Alibaba开发的电商项目,移动端使用Flutter2.x构建,小程序使用.zip

    在高并发场景下,Sentinel可以帮助系统保护关键资源,防止过载导致服务崩溃。 3. **Seata**:用于分布式事务处理,Seata实现了AT、TCC、Saga、XA等事务模式,解决了微服务架构下的分布式事务难题,保证了业务数据的...

    百度外卖基础服务体系演进过程.pdf

    2. 服务治理:采用服务注册、订阅机制,统一的RPC框架,分布式调用链跟踪,全局超时控制,过载保护,以及柔性服务和依赖降级策略,以应对高并发挑战。 四、服务治理的详细机制 1. 服务注册与订阅:服务提供者向注册...

    workshop专场微服务专场开发者动手实践营微服务SpringCloudAlibaba微服务全家桶体验.pdf

    2. **服务限流与降级**:利用 Sentinel 实现对服务的流量控制,防止系统过载。 3. **配置管理**:Nacos 提供了强大的动态配置管理能力,可以实时更新配置而不重启服务。 4. **消息驱动**:集成 RocketMQ 进行消息...

    C2C 电商系统微服务架构,展示spring cloud alibaba常见组件的使用.zip

    3. **Sentinel**:Sentinel是针对分布式系统的流量控制、熔断和降级的工具,它可以保护系统免受过载的影响,确保服务的稳定性和可用性。在C2C电商系统中,Sentinel可以用于控制关键服务的流量,避免雪崩效应。 4. *...

    分布式系统概念与设计 练习题

    - 加密与隐私保护:保护数据免受未经授权的访问。 以上这些知识点可能会出现在“分布式系统概念与设计”的练习题中,通过解答这些题目,可以加深对分布式系统设计的理解和应用能力。在实际的学习过程中,应注重...

    《分布式服务框架原理与实践》高清完整版

    7. **分布式事务**:在分布式环境中,保证事务的一致性是挑战之一。2PC(二阶段提交)、TCC(Try-Confirm-Cancel)、Saga和最终一致性等是常见的解决方案。 8. **容错机制**:系统设计需要考虑到异常情况,例如网络...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    过载保护设计 协议设计 二进制协议 文本协议 接入层架构设计 DNS轮询 动静态分离 静态化 反向代理 LVS F5 CDN 逻辑层架构设计 连接池 串行化技术 影子Master架构 批量写入 配置中心 去中心化 ...

    分布式对象技术 真题

    - 消息传递:对象通过发送消息来通信,如RPC(Remote Procedure Call)和SOAP(Simple Object Access Protocol)。 - 同步与异步:同步通信等待响应,异步则允许发送方继续执行其他任务。 5. 分布式事务处理: -...

Global site tag (gtag.js) - Google Analytics