代码之家  ›  专栏  ›  技术社区  ›  Toad

ActiveMQ内存消耗(页面文件)…怎么办?

  •  2
  • Toad  · 技术社区  · 14 年前

    Is activemq reliable? )

    我们删除了持久性,因为我们需要更快的速度。我们的工人可以跟上消息,但是,即使队列通常处于0挂起状态,在处理了大约45000条消息(一条消息通常有100个字符长)之后,页面文件也是8GB!!但它不会就此停止,它会一直持续到达到15GB(我们的服务器有16gb内存)!

    停止ActiveMQ进程并不会清理这个页面文件,它仍然是如此巨大。

    以下是我们使用的设置:

    <policyEntry queue=">" producerFlowControl="false" memoryLimit="2gb">
    </policyEntry>
    

    <systemUsage>
        <systemUsage>
            <memoryUsage>
                <memoryUsage limit="20 mb"/>
            </memoryUsage>
            <storeUsage>
                <storeUsage limit="1 gb"/>
            </storeUsage>
            <tempUsage>
                <tempUsage limit="100 mb"/>
            </tempUsage>
        </systemUsage>
    </systemUsage>
    

    我们的服务器:Windows2003(64位)。ActivemQ(5.3.2),带Java64位(1.6.0\u22)

    3 回复  |  直到 8 年前
        1
  •  1
  •   Amir Afghani    14 年前

    如果在您停止ActiveMQ之后内存仍然没有被释放,我很想说这是JDK中的一个bug。你考虑过降级到一个更稳定的版本吗?还可以尝试用32位JDK运行这个程序,看看是否可以用较小的max memory设置重现这个问题。

        2
  •  1
  •   Bamieater    14 年前

        3
  •  1
  •   Rob Davies    14 年前

    您能发布完整的ActiveMQ配置吗?在ActiveMQ代理上设置persistent=false了吗?我认为发生的事情是因为您关闭了流控制,并且只允许代理使用20mb内存—您的消息被分页到临时存储中的磁盘。如果persistent=false,则不应发生这种情况—但请启用流控制—这会有所帮助;)