1 Reply Latest reply on Oct 7, 2004 5:20 PM by genman

    OutOfMemory Excep., in JMS/JBOSS 3.2.2RC4

    nagu

      Hello,

      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

        • 1. Re: OutOfMemory Excep., in JMS/JBOSS 3.2.2RC4
          genman


          Any particular reason to be running 3.2.2RC4? Take a look at the JMS configuration in 3.2.5 or (better) a 3.2.6RC release. HSQLDB should be storing messages on disk.

          For higher capacity over 2GB, you may want to use MySQL or some other free DB instead.