能进这个帖子的相信的或多或少懂AMQ,所有,谢谢各位的热心,我在使用AMQ的过程中遇到了一些问题,也不清楚是配置还是AMQ的问题,特请教,谢谢。
使用环境:
ActiveMQ版本是:5.5
Broker配置:
MemoryLimit:256m
Persistent:true
StoreLimit:10g
TempLimit:10g
使用Topic:
两个订阅者,其中一个离线。
发送端对一个文件进行分块,每块1M发送到AMQ,通过jconsole分析发现
1.每发送一个块消息,AMQ内存就上涨5,6M。
2.在线的订阅者接收完消息后,内存使用大致停留在发送完最后一块消息出处,手动在jconsole中执行GC,没有明显下降。
3.将另外一个订阅者启动,接收完所有消息,内存依旧没有下降,手动在jconsole中执行GC,内存回到初始正常范围。
4.如果发送一个较大的文件(比broker配置的内存大),在jconsole中发送,amq内存直线上升,直到达到Amq最大内存,消息发送端报出内存溢出停止,然后amq内存一直停在最大值。当订阅者接收完后,执行GC,内存才会释放。
下面是jconsole与JProfiler监控图,共两张,
第一张是消息发送完,一个在线订阅者接收完后的内存使用情况。
第二张是离线订阅者启动接收完消息,并手动在jconsole中执行GC的结果