目前的MQ服务使用了基于共享文件锁的集群方式,使用了主从两台机器进行主备的相互切换.

MQ的消息均使用了持久化配置,用于保证消息的可靠性.

最初使用了自身默认的KahaDB作为存储引擎,后来发现此种方式下日志文件过多,容易造成IO问题和达到操作系统的文件打开限制.

虽然可以加大限制的阀值,但终归不能很好的解决此问题.

后台关注到了一个第三方的基于KahaDB的引擎即MKahaDB,目前也已经集成到了ActiveMQ,只是并未作为默认的配置.

通过使用MkahaDB的策略,将MQ中的Quene和Topic单独分文件夹,没个文件夹下不超过5个日志文件.

由于是粗放的配置,不论繁忙与否的消息队列都占用了同样的存储空间,这样的配置自然也不是最优的.

另外一个问题是在某此宕机后,恢复MQ时发生文件IO错误java.lang.NegativeArraySizeException,异常信息如下:

 

校验消息服务的日志文件时失败了,可以通过如下配置显式的进行处理:

 

发表评论