OutOfMemory Excep., in JMS/JBOSS 3.2.2RC4
nagu Oct 7, 2004 11:43 AMHello,
I am using JBOSS 3.2.2RC4 with the minimal version on Monta Vista LINUX (2.4.20_mvlcge31-cpci735).
I am currently using only the JMS component of JBOSS to publish and subscribe JMS events.
I am using Durable events.
There is one publisher and 2 subscribers and all of them are running on the same machine.
The size of the default.script in hypersonic directory was at 70mb.
Under load test with events being published every 5 Secs, within 10 hrs or so we noticed that JBOSS's JVM started using 49 % of the CPU.
I have the following information
1. Trace of the exception.
2. The configuration that we have in jboss-destinations-service.xml
Please let me know
1. How to resolve this problem.
2. As i know, hypersonic is an in memory database, so as the data stored increases, JVM would run out of memory unless it flushes out the data. How does this work !?
In server.log we have noticed the JVM throwing OutOfMemory Exception.
and here is the trace of it
2004-10-06 12:17:49,411 ERROR [STDERR] java.lang.OutOfMemoryError 2004-10-06 12:17:49,428 WARN [org.jboss.mq.il.oil.OILServerILService] Client request resulted in a server exception: org.jboss.mq.SpyJMSException: Could not store message: 29436 msg=3870 hard NOT_STORED PERSISTENT queue=TOPIC.AlarmTopic.ID:5.KwJmsAlarmCh priority=4 hashCode=15074734; - nested throwable: (java.sql.SQLException: out of memory) at org.jboss.mq.pm.jdbc2.PersistenceManager.add(PersistenceManager.java:704) at org.jboss.mq.server.PersistentQueue.addMessage(PersistentQueue.java:39) at org.jboss.mq.server.JMSTopic.addMessage(JMSTopic.java:290) at org.jboss.mq.server.JMSDestinationManager.addMessage(JMSDestinationManager.java:409) at org.jboss.mq.server.JMSDestinationManager.addMessage(JMSDestinationManager.java:385) at org.jboss.mq.server.JMSServerInterceptorSupport.addMessage(JMSServerInterceptorSupport.java:135) at org.jboss.mq.security.ServerSecurityInterceptor.addMessage(ServerSecurityInterceptor.java:162) at org.jboss.mq.server.TracingInterceptor.addMessage(TracingInterceptor.java:234) at org.jboss.mq.server.JMSServerInvoker.addMessage(JMSServerInvoker.java:137) at org.jboss.mq.il.oil.OILServerILService$Client.run(OILServerILService.java:253) at java.lang.Thread.run(Thread.java:534) Caused by: java.sql.SQLException: out of memory at org.hsqldb.Trace.getError(Unknown Source) at org.hsqldb.Result.<init>(Unknown Source) at org.hsqldb.jdbcConnection.executeHSQL(Unknown Source) at org.hsqldb.jdbcConnection.execute(Unknown Source) at org.hsqldb.jdbcStatement.fetchResult(Unknown Source) at org.hsqldb.jdbcStatement.executeUpdate(Unknown Source) at org.hsqldb.jdbcPreparedStatement.executeUpdate(Unknown Source) at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:308) at org.jboss.mq.pm.jdbc2.PersistenceManager.add(PersistenceManager.java:742) at org.jboss.mq.pm.jdbc2.PersistenceManager.add(PersistenceManager.java:689) ... 10 more
<mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.mq.destination:service=Topic,name=EventTopic"> <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends> <depends optional-attribute-name="SecurityManager">jboss.mq:service=SecurityManager</depends> <attribute name="SecurityConf"> <security> <role name="guest" read="true" write="true" create="true"/> <role name="publisher" read="true" write="true" create="false"/> <role name="durpublisher" read="true" write="true" create="true"/> </security> </attribute> </mbean> <mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.mq.destination:service=Topic,name=AlarmTopic"> <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends> <depends optional-attribute-name="SecurityManager">jboss.mq:service=SecurityManager</depends> <attribute name="SecurityConf"> <security> <role name="guest" read="true" write="true" create="true"/> <role name="publisher" read="true" write="true" create="false"/> <role name="durpublisher" read="true" write="true" create="true"/> </security> </attribute> </mbean> <mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.mq.destination:service=Topic,name=AlarmHistoryTopic"> <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends> <depends optional-attribute-name="SecurityManager">jboss.mq:service=SecurityManager</depends> <attribute name="SecurityConf"> <security> <role name="guest" read="true" write="true" create="true"/> <role name="publisher" read="true" write="true" create="false"/> <role name="durpublisher" read="true" write="true" create="true"/> </security> </attribute> </mbean>
Thank you in advance,
Nageshwar