修改ActiveMQ的内存大小

博客介绍了修改ActiveMQ内存大小的方法,因ActiveMQ运行于JVM之上,修改其内存即修改JVM内存,配置文件为wrapper.conf。分别说明了设置内存小于4096MB和大于4096MB时的修改方式,还提及配置不生效时的解决办法。

  ActiveMQ运行于JVM之上,所以,修改ActiveMQ的内存大小也就是修改JVM的内存大小。修改的配置文件是wrapper.conf,对于windows版本的MQ,该文件位于ActiveMQ根目录下的/bin/win64或者/bin/win32;对于linux版本的MQ,该文件位于ActiveMQ根目录下的/bin/linux-x86-64或者/bin/linux-x86-32。

1. 当设置的内存小于4096MB时

  修改wrapper.java.initmemorywrapper.java.maxmemory,这两个参数分别对应于java堆内存的初始值和最大值,单位为MB。

2. 当设置的内存大于4096MB时

  由于社区版本的ActiveMQ设置了4096MB的限制,所以当通过第一种方式设置大于4096MB的堆内存时并不能生效,此时可以通过修改wrapper.java.additional.n来实现。这里的n是已经存在的wrapper.java.additional的序号最大值加1。比如已经存在wrapper.java.additional.1至wrapper.java.additional.9,那么接下来添加wrapper.java.additional.10来配置java堆内存。具体配置如下:

wrapper.java.additional.10=-Xms2048M -Xmx5120M

其中-Xms是初始化内存,-Xmx是最大内存
  另外:如果以上配置不生效,可以使用通过在wrapper.java.additional.9末尾增加参数的方式来配置,具体如下:

wrapper.java.additional.9 = -java.util.logging.config.file=logging.properties -Xms1024M -Xmx8192M

  注意:使用这种方式配置java堆内存时需要将wrapper.java.initmemory和wrapper.java.maxmemory注释掉。

3. 参考

Java Wrapper does whatever it wants

调整ActiveMQ内存大小主要涉及两个层面的配置:JVM内存设置ActiveMQ内部的消息存储内存限制。以下是详细的修改步骤和配置说明: ### 三、JVM内存配置 ActiveMQ运行在Java虚拟机(JVM)之上,因此其整体内存限制由JVM的堆内存参数控制。这些参数通常在`wrapper.conf`文件中进行配置。该文件的位置取决于操作系统和安装路径: - Windows:位于`ActiveMQ_HOME/bin/win32`或`ActiveMQ_HOME/bin/win64`目录下 - Linux:位于`ActiveMQ_HOME/bin/linux-x86-32`或`ActiveMQ_HOME/bin/linux-x86-64`目录下 在`wrapper.conf`中,查找并修改以下参数: ```properties wrapper.java.additional.1=-Xms2G wrapper.java.additional.2=-Xmx4G ``` 其中,`-Xms`表示JVM初始堆内存大小,`-Xmx`表示JVM最大内存大小。根据实际需求调整这两个值,例如设置为`-Xms5G -Xmx5G`[^2]。 > **注意**:如果设置内存小于4096MB,建议根据物理内存和系统负载合理配置,避免资源浪费或不足[^1]。 ### 三、ActiveMQ内部内存使用配置 除了JVM堆内存之外,ActiveMQ还通过`activemq.xml`配置文件控制其内部的内存使用策略,尤其是针对非持久化消息的内存占用。该文件通常位于`ActiveMQ_HOME/conf/`目录下。 在`<systemUsage>`标签中,可以配置以下内容: ```xml <systemUsage> <memoryUsage> <!-- 非持久化消息占用JVM内存大小 --> <memoryUsage percentOfJvmHeap="70" /> </memoryUsage> <storeUsage> <!-- 持久化消息占用硬盘大小 --> <storeUsage limit="100 gb"/> </storeUsage> <tempUsage> <!-- 非持久化消息占用硬盘大小 --> <tempUsage limit="50 gb"/> </tempUsage> </systemUsage> ``` `percentOfJvmHeap`表示非持久化消息可以使用的堆内存百分比。例如设置为70%,表示最多使用JVM堆内存的70%用于存放非持久化消息[^3]。 ### 三、推荐JVM参数(适用于高并发场景) 对于高并发或大数据量传输的场景,建议在`ACTIVEMQ_OPTS_MEMORY`中添加更精细的JVM参数,以提升性能并避免内存溢出(OutOfMemoryError): ```bash ACTIVEMQ_OPTS_MEMORY="-server -Xmx5g -Xms5g -Xmn1280m -XX:PermSize=640m -Xss1280k -XX:+DisableExplicitGC" ``` 上述参数说明如下: - `-Xmx5g`:JVM最大内存为5GB - `-Xms5g`:JVM初始堆内存为5GB - `-Xmn1280m`:年轻代(Young Generation)大小为1280MB - `-XX:PermSize=640m`:永久代初始大小(适用于JDK8及以下) - `-Xss1280k`:线程栈大小 - `-XX:+DisableExplicitGC`:禁用System.gc()调用,防止不必要GC触发[^2] ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值