Configuration
I installed the standalone HornetQ cluster (2.4.7-Final) on Ubuntu 12.04.3 LTS (GNU / Linux 3.8.0-29-generic x86_64). The instance has 16 GB of RAM with 2 cores, and I assigned -Xms5G -Xmx10G to the JVM.
The following is the address setting in the HornetQ configuration:
<address-settings> <address-setting match="jms.queue.pollingQueue"> <dead-letter-address>jms.queue.DLQ</dead-letter-address> <expiry-address>jms.queue.ExpiryQueue</expiry-address> <redelivery-delay>86400000</redelivery-delay> <max-delivery-attempts>10</max-delivery-attempts> <max-size-bytes>1048576000</max-size-bytes> <page-size-bytes>10485760</page-size-bytes> <address-full-policy>PAGE</address-full-policy> <message-counter-history-day-limit>10</message-counter-history-day-limit> </address-setting> <address-setting match="jms.queue.offerQueue"> <dead-letter-address>jms.queue.DLQ</dead-letter-address> <expiry-address>jms.queue.ExpiryQueue</expiry-address> <redelivery-delay>3600000</redelivery-delay> <max-delivery-attempts>25</max-delivery-attempts> <max-size-bytes>1048576000</max-size-bytes> <page-size-bytes>10485760</page-size-bytes> <address-full-policy>PAGE</address-full-policy> <message-counter-history-day-limit>10</message-counter-history-day-limit> </address-setting> <address-setting match="jms.queue.smsQueue"> <dead-letter-address>jms.queue.DLQ</dead-letter-address> <expiry-address>jms.queue.ExpiryQueue</expiry-address> <redelivery-delay>3600000</redelivery-delay> <max-delivery-attempts>25</max-delivery-attempts> <max-size-bytes>1048576000</max-size-bytes> <page-size-bytes>10485760</page-size-bytes> <address-full-policy>PAGE</address-full-policy> <message-counter-history-day-limit>10</message-counter-history-day-limit> </address-setting> <address-setting match="#"> <dead-letter-address>jms.queue.DLQ</dead-letter-address> <expiry-address>jms.queue.ExpiryQueue</expiry-address> <redelivery-delay>3600000</redelivery-delay> <max-delivery-attempts>25</max-delivery-attempts> <max-size-bytes>1048576000</max-size-bytes> <page-size-bytes>10485760</page-size-bytes> <address-full-policy>PAGE</address-full-policy> <message-counter-history-day-limit>10</message-counter-history-day-limit> </address-setting> </address-settings>
There are 10 more queues associated with the default address indicated by a wildcard.
Problem
Over time, Direct ByteBuffer memory gradually increases and even takes up swap space, eventually throwing an OutOfMemoryError ("Direct Buffer Memory").
I tried a lot of JVM and JMS settings, but in vain. Even the -XX: MaxDirectMemorySize = 4G job for the JVM led to early OOME for the same reason. It seems that ByteBuffer is not readable, or the GC does not require memory without references.
Has anyone come across the same question before?
Any suggestions are welcome and in advance in advance.
Tushu source share