2
回答
ACTIVEMQ遇到隔一段时间需要重启生产服务
华为云实践训练营,热门技术免费实践!>>>   

@李丹 你好,想跟你请教个问题:

在你写的activemq遇到无法解决问题中,说您没有代理producer方法,您是怎么跟踪到的呢,一定要到JVM堆栈都满了才能发现了,现在我的ACTIVEMQ中平均2个月要重启发送端,请帮忙看一下是否发送端也有问题?谢谢

目前跟踪堆栈信息如下:

举报
beata_xing
发帖于5年前 2回/1K+阅
共有2个答案 最后回答: 5年前
先是查看服务器端的堆信息,发现大量的producer相关类占用了堆空间,但是不用自己写的代理又没有这个问题。但是作为一个对象池其实主要是代理close方法以便资源回收。对比原生session类的和代理类的close方法就会发现,原生类在这个方法中给服务器发送了一条消息表示当前session已经关闭,消息中包含了由当前session创建的producer consumer等对象的信息,而代理类只是简单的将session归还到池中,
所以问题就归结为,代理类每次都创建新的producer,但是没有适时的告诉服务端释放这些信息导致的,鉴于代理类是可重用而且线程独占的,那么重新代理createproducer方法,将producer对象也缓存起来重用就好了
顶部