`

Activemq 在大流量下出现内存耗尽的情况以及解决方案

阅读更多

在大量消息持续发送到broker的情况下,当broker到消费者之间的网络满了以后,broker的消息无法发送出去,导致在TransportConnection的dispatchQueue中堆积的消息越来越多。PendingMessageCursor中的消息不能被及时消费,导致broker判断消费者为慢消费者。当broker的内存被耗尽后JVM会频繁的进行full gc,由于消息不能被回收,所以消息对象会从年轻代转移到老年代而不会释放内存,导致broker几乎停止对外服务。

 

这个问题的根本原因是ActiveMQ只对接收消息作了流量控制,但是没有发送消息堵塞的情况。需要根据消息发送情况来控制消息的接收。

 

解决方案,在TransportConnection中的dispatchAsync对dispatchQueue中的消息数量做判断,当超过阈值就暂停dispatch,当前thread sleep,这样TopicSubscription就会暂停接收消息,避免内存耗尽。

分享到:
评论

相关推荐

    ActiveMQ高并发处理方案

    本文将详细介绍ActiveMQ在高并发环境下的优化策略,包括异常处理、连接池使用、消费者公平调度以及系统整体扩展等方面。 #### 二、高并发发送消息异常及其解决 ##### 现象描述 当使用多个线程(如10个)以一定频率...

    ActiveMQ消息过期时间设置和自动清除解决方案

    ### ActiveMQ 消息过期时间设置与自动清除解决方案 #### 概述 在消息队列的场景下,为了防止消息长时间滞留在队列中占用资源或者为了满足业务上对消息时效性的需求,通常需要对消息设定过期时间。本文档详细介绍了...

    ActiveMQ队列消息过期时间设置和自动清除解决方案.docx

    ActiveMQ 队列消息过期时间设置和自动清除解决方案 ActiveMQ 是一个开源的消息队列系统,用于实现分布式系统之间的异步通信。在使用 ActiveMQ 时,消息过期时间设置和自动清除是一个非常重要的问题。本文将介绍 ...

    ActiveMQ开发规范及方案

    ActiveMQ分布式方案是指在分布式系统中使用ActiveMQ的方案。分布式系统中使用ActiveMQ可以实现系统之间的解耦和异步通信,从而提高系统的性能和可靠性。 场景分析 分布式系统中使用ActiveMQ需要对系统进行场景...

    ActiveMQ问题解决记录

    这篇博客"ActiveMQ问题解决记录"可能涵盖了作者在使用ActiveMQ过程中遇到的问题以及解决这些问题的经验分享。 首先,让我们了解一下ActiveMQ的基本概念。ActiveMQ作为消息中间件,它充当应用程序之间的桥梁,负责...

    7道消息队列ActiveMQ面试题!

    在使用ActiveMQ的过程中,可能会遇到消息丢失的问题,尤其是在网络不稳定或者客户端/服务器异常关闭的情况下。为了避免消息丢失,推荐使用持久化消息,或者在必要时开启事务,确保消息被正确处理。对于非持久化消息...

    activemq在maven工程

    有时,我们可能需要在不依赖Spring的情况下发送或接收消息。这时可以创建一个静态工具类,手动创建并管理连接和会话。例如: ```java public class ActiveMQUtils { public static void sendMessage(String ...

    Linux下activeMQ的启动和停止.docx

    在Linux环境下,Apache ActiveMQ是一个广泛使用的开源消息代理和队列服务器,它是Java Message Service (JMS) 的实现,能够处理大量的并发消息传递。ActiveMQ提供了高可用性、可扩展性和稳定性,使得它成为分布式...

    activeMQ 例子 真实环境下测试过

    在实际环境中测试这些例子,可以帮助我们了解ActiveMQ在真实负载下的表现,以及如何调整配置以适应不同的系统需求。例如,测试消息的延迟、吞吐量、并发处理能力等,这些都是评估消息中间件性能的关键指标。此外,还...

    Jmeter测试ActiveMQ性能报告

    本报告详细阐述了使用JMeter对ActiveMQ进行性能测试的过程和结果,旨在评估ActiveMQ在JMS(Java消息服务)环境下的性能表现。JMeter作为一个强大的负载和性能测试工具,被广泛用于测试各种应用程序,包括消息中间件...

    ActiveMQ消息中间件面试专题1

    通过理解服务器宕机时的数据存储策略,处理丢消息的策略,优化持久化消息的发送,调整prefetch机制以确保消息公平分配,以及利用死信队列来处理异常情况,我们可以更好地利用ActiveMQ构建健壮的分布式系统。

    Windows版ActiveMq

    在Windows环境下使用ActiveMQ,可以为开发者提供跨平台的消息传递解决方案,促进应用程序之间的解耦和异步通信。 在标题中提到的"Windows版ActiveMQ",指的是专门为Windows操作系统优化的ActiveMQ版本。这个版本...

    linux下activemq安装包和配置文档

    linux下activemq安装包和配置文档

    ActiveMQ消息服务配置

    本文将详细介绍ActiveMQ的配置要点,包括Java内存调整、主从集群配置以及如何自动清理离线客户端等内容。 #### 二、ActiveMQ的目录结构 ActiveMQ的目录结构主要包括以下几个关键部分: 1. **bin**:运行目录,...

    windows下activemq-5.14.1

    本资源提供的"windows下activemq-5.14.1"压缩包包含了版本5.14.1的所有必要文件,确保了即使在官网下载困难的情况下也能方便地获取。 1. **ActiveMQ介绍** - **什么是ActiveMQ**:ActiveMQ是一个高效、灵活的消息...

    activeMQ在文件上传的应用

    5. **异步处理**:ActiveMQ的异步特性使得文件上传操作可以在不影响用户界面的情况下进行,提高了系统的响应速度。即使文件上传过程中出现错误,由于消息的持久化特性,可以确保消息不会丢失,待问题解决后重新尝试...

    ActiveMQwindow环境下安装包

    在Windows环境下安装ActiveMQ,我们可以按照以下步骤进行: 1. **下载与解压**: 首先,你已经从官方网站下载了适用于Windows的ActiveMQ版本,这里是`apache-activemq-5.15.7`。这个压缩包包含了所有必要的文件和...

    JMS教程+activemq以及activemq和tomcat的整合

    在ActiveMQ中,持久化消息意味着即使在服务器重启后,消息也不会丢失。这可以通过在发送消息时设置`DeliveryMode.PERSISTENT`实现。在ActiveMQ配置文件中,可以调整持久化存储的相关参数,例如日志类型、存储大小...

Global site tag (gtag.js) - Google Analytics