I have a problem whereby the ActiveMQ broker crashes when my system has been
running for more than ~6 hours. By "crashes" I mean it's still running but
won't allow any sending/receiving of messages and needs to be restarted.
Here's my setup:

ActiveMQ 5.5.0 with the out-of-the-box configuration, except after it
crashed the first few times I set Xmx to 2048M and
UseDedicatedTaskRunner=false, not really sure why though.

Has around 200 (non-transacted) connections from locally networked PCs but
very minimal traffic - around two messages per second.

Runs on Ubuntu 9.04, using:
java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)


My data/activemq.log shows the following when it crashes:

2011-07-14 03:57:54,605 | INFO  | Transport failed: java.io.EOFException |
org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transpo
rt: tcp:///146.169.52.132:53248
2011-07-14 03:58:00,925 | INFO  | Transport failed: java.io.EOFException |
org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transpo
rt: tcp:///146.169.52.133:50171
2011-07-14 03:58:03,795 | INFO  | Transport failed:
java.net.SocketException: Broken pipe |
org.apache.activemq.broker.TransportConnection.Transport |
 InactivityMonitor Async Task:
java.util.concurrent.ThreadPoolExecutor$Worker@4dcd6d55
2011-07-14 03:58:07,275 | INFO  | Transport failed:
java.net.SocketException: Broken pipe |
org.apache.activemq.broker.TransportConnection.Transport |
 Async Exception Handler
2011-07-14 03:58:07,274 | INFO  | Transport failed:
java.net.SocketException: Broken pipe |
org.apache.activemq.broker.TransportConnection.Transport |
 InactivityMonitor Async Task:
java.util.concurrent.ThreadPoolExecutor$Worker@5ff907ee
2011-07-14 03:58:03,802 | INFO  | Transport failed:
java.net.SocketException: Broken pipe |
org.apache.activemq.broker.TransportConnection.Transport |
 InactivityMonitor Async Task:
java.util.concurrent.ThreadPoolExecutor$Worker@3bd1c463
2011-07-14 03:58:07,274 | INFO  | Transport failed:
java.net.SocketException: Broken pipe |
org.apache.activemq.broker.TransportConnection.Transport |
 InactivityMonitor Async Task:
java.util.concurrent.ThreadPoolExecutor$Worker@3a15e82a


etc. etc. lots more Broken pipes... then some of these interspersed with
many more broken pipes:

2011-07-14 03:58:10,201 | INFO  | Transport failed:
org.apache.activemq.transport.InactivityIOException: Cannot send, channel
has already failed: /146
.169.53.87:46663 | org.apache.activemq.broker.TransportConnection.Transport
| Async Exception Handler


Then some of these (still interspersed with broken pipes and failed channel
messages):

2011-07-14 04:18:50,633 | WARN  | Failed to unregister mbean:
org.apache.activemq:BrokerName=localhost,Type=Connection,ConnectorName=openwire,ViewType
=address,Name=/146.169.52.126_33912 |
org.apache.activemq.broker.jmx.ManagedTransportConnection | ActiveMQ
Task-103


Then the end is nigh with a few of these:

2011-07-14 04:19:54,077 | WARN  | Failed to remove consumer: ID:"I removed
the address here"-60248-1310591381109-0:1:-1:1. Reason:
java.lang.OutOfMemoryError
: Java heap space | org.apache.activemq.broker.TransportConnection |
ActiveMQ Task-69
java.lang.OutOfMemoryError: Java heap space
        at
java.util.concurrent.CopyOnWriteArrayList.remove(CopyOnWriteArrayList.java:481)
        at
java.util.concurrent.CopyOnWriteArraySet.remove(CopyOnWriteArraySet.java:205)
        at
org.apache.activemq.broker.jmx.ManagedRegionBroker.unregisterSubscription(ManagedRegionBroker.java:381)
        at
org.apache.activemq.broker.jmx.ManagedRegionBroker.removeConsumer(ManagedRegionBroker.java:255)
        at
org.apache.activemq.broker.BrokerFilter.removeConsumer(BrokerFilter.java:117)
        at
org.apache.activemq.advisory.AdvisoryBroker.removeConsumer(AdvisoryBroker.java:225)
        at
org.apache.activemq.broker.BrokerFilter.removeConsumer(BrokerFilter.java:117)
        at
org.apache.activemq.broker.BrokerFilter.removeConsumer(BrokerFilter.java:117)
        at
org.apache.activemq.broker.MutableBrokerFilter.removeConsumer(MutableBrokerFilter.java:123)
        at
org.apache.activemq.broker.TransportConnection.processRemoveConsumer(TransportConnection.java:575)
        at
org.apache.activemq.broker.TransportConnection.processRemoveSession(TransportConnection.java:613)
        at
org.apache.activemq.broker.TransportConnection.processRemoveConnection(TransportConnection.java:726)
        at
org.apache.activemq.broker.TransportConnection.doStop(TransportConnection.java:1025)
        at
org.apache.activemq.broker.jmx.ManagedTransportConnection.doStop(ManagedTransportConnection.java:71)
        at
org.apache.activemq.broker.TransportConnection$3.run(TransportConnection.java:952)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
2011-07-14 04:19:54,077 | WARN  | Problem scavenging sessions |
org.eclipse.jetty.util.log | HashSessionScavenger-1
java.lang.OutOfMemoryError: Java heap space


After the broker "crashes" my clients dump the following when attempting to
create a temporary queue (though "createTemporaryQueue" is just the first
method of the local "Session" that they call):

Exception in thread "Thread-4" javax.jms.JMSException: Timer already
cancelled.
        at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
        at
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1295)
        at
org.apache.activemq.ActiveMQConnection.createTempDestination(ActiveMQConnection.java:1930)
        at
org.apache.activemq.ActiveMQSession.createTemporaryQueue(ActiveMQSession.java:1330)
        at project.hub.Client.receive(Client.scala:54)
        at project.Node$.colony(Node.scala:52)
        at
project.Node$$anonfun$main$1$$anonfun$apply$1.apply$mcV$sp(Node.scala:69)
        at project.util.Ops$$anon$1.run(Ops.scala:5)
        at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.IllegalStateException: Timer already cancelled.
        at java.util.Timer.sched(Timer.java:354)
        at java.util.Timer.schedule(Timer.java:222)
        at
org.apache.activemq.thread.Scheduler.schedualPeriodically(Scheduler.java:49)
        at org.apache.activemq.broker.region.Queue.start(Queue.java:852)
        at
org.apache.activemq.broker.region.AbstractRegion.addDestination(AbstractRegion.java:129)
        at
org.apache.activemq.broker.region.RegionBroker.addDestination(RegionBroker.java:304)
        at
org.apache.activemq.broker.region.RegionBroker.addDestinationInfo(RegionBroker.java:367)
        at
org.apache.activemq.advisory.AdvisoryBroker.addDestinationInfo(AdvisoryBroker.java:160)
        at
org.apache.activemq.broker.BrokerFilter.addDestinationInfo(BrokerFilter.java:217)
        at
org.apache.activemq.broker.BrokerFilter.addDestinationInfo(BrokerFilter.java:217)
        at
org.apache.activemq.broker.MutableBrokerFilter.addDestinationInfo(MutableBrokerFilter.java:223)
        at
org.apache.activemq.broker.TransportConnection.processAddDestination(TransportConnection.java:480)
        at
org.apache.activemq.command.DestinationInfo.visit(DestinationInfo.java:122)
        at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:306)
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:179)
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69)
        at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
        at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:227)
        at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
        at
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:220)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:202)
        at java.lang.Thread.run(Thread.java:619)



I also get the following from a different client thread that is blocked on
"MessageConsumer.receive":

Exception in thread "Thread-10" javax.jms.JMSException: Channel was inactive
for too (>30000) long: server/146.169.2.83:61678
        at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
        at
org.apache.activemq.ActiveMQMessageConsumer.dequeue(ActiveMQMessageConsumer.java:458)
        at
org.apache.activemq.ActiveMQMessageConsumer.receive(ActiveMQMessageConsumer.java:504)
        at project.hub.Client$$anonfun$2.apply$mcV$sp(Client.scala:32)
        at project.util.Ops$$anon$1.run(Ops.scala:5)
        at java.lang.Thread.run(Thread.java:636)


Another type of broker client I have dumps these:

Exception in thread "Thread-10" javax.jms.JMSException: Cannot send, channel
has already failed: server/146.169.2.83:61678
        at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
        at
org.apache.activemq.ActiveMQConnection.doAsyncSendPacket(ActiveMQConnection.java:1267)
        at
org.apache.activemq.ActiveMQConnection.asyncSendPacket(ActiveMQConnection.java:1259)
        at
org.apache.activemq.ActiveMQSession.asyncSendPacket(ActiveMQSession.java:1863)
        at
org.apache.activemq.ActiveMQMessageProducer.close(ActiveMQMessageProducer.java:147)
        at project.hub.Server$.theoryProvider(Server.scala:114)
        at
project.hub.Server$$anonfun$main$2$$anonfun$apply$1.apply$mcV$sp(Server.scala:176)
        at project.util.Ops$$anon$1.run(Ops.scala:5)
        at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.activemq.transport.InactivityIOException: Cannot send,
channel has already failed: server/146.169.2.83:61678
        at
org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:246)
        at
org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85)
        at
org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:104)
        at
org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
        at
org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
        at
org.apache.activemq.ActiveMQConnection.doAsyncSendPacket(ActiveMQConnection.java:1265)
        ... 7 more



Any help would be greatly appreciated.

Will

--
View this message in context: 
http://activemq.2283324.n4.nabble.com/ActiveMQ-5-5-0-broker-crashing-tp3667090p3667090.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to