I filed a bug in Jira a few days ago with details about the memory
problems I'm seeing, including a heap histogram that shows it's in the
openwire cache. It allocates lots of 64kb arrays.
On 9/28/06, James Strachan <[EMAIL PROTECTED]> wrote:
Is just the consumer running in the JVM and the broker & producer are
seperate? If you think you've found some kind of memory leak, please
run a profiler to help us figure out whats going on.
On 9/28/06, HU <[EMAIL PROTECTED]> wrote:
>
> Hi, James.
>
> Our system have to continue to keep the running one month or more long
> term without any memory leaks.
>
> Yesterday's test was interrupted due to the memory leak(OutOfMemory) on the
> consumer thread side after I changed the java heap to -Xmx512K.
>
> Now I began a new test following the prefetch limit.
> I changed the code:
> destinetionQueue = session.createQueue("RequestQueue");
> to
> destinetionQueue = New
> ActiveMQQueue("RequestQueue?consumer.prefetchSize=1");
> .
> The test is running now, but the GC tell me the heap is used slowing up...
>
>
>
> James.Strachan wrote:
> >
> > A consumer will use a readonable amount of RAM due to the prefetch
> > bufffer...
> >
> > http://incubator.apache.org/activemq/what-is-the-prefetch-limit-for.html
> >
> > if you are worried about RAM usage for a consumer, set the prefetch to 1
> >
> > On 9/27/06, HU <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >> OK, I will let it run to dead.
> >>
> >> It has already run about 7Hours and send 7300 messages between Sender and
> >> consumer.
> >> Now, It is still running..
> >> The used heap by Consumer is up to 2.5M by GC.
> >>
> >>
> >> James.Strachan wrote:
> >> >
> >> > How long do you run your system for? Try send about 10,000 messages
> >> > through the system, then monitor the memory and see if there's a leak.
> >> >
> >> > On 9/27/06, HU <[EMAIL PROTECTED]> wrote:
> >> >>
> >> >> Hi, James.
> >> >>
> >> >> Thanks, I have had the broker run with Mysql DB.
> >> >>
> >> >> Then I run the broker and a sender on a PC and run a consumer on
> >> another
> >> >> PC,
> >> >> Send a message to a queue by the sender thread and receve the messsage
> >> by
> >> >> the consumer thread then reply a message to sender thread by the
> >> >> consumer,
> >> >> repeat the actions.
> >> >> I found the heap was used creep up and did not found the used memory
> >> be
> >> >> released by the consumer thread. I used GC to get tracing for the
> >> test.
> >> >> Following are the codes of my test, could you please help me to fix
> >> the
> >> >> issue.
> >> >>
> >> >> public class Newconsumer extends Thread{
> >> >> private Session session;
> >> >> private Connection connection;
> >> >> private MessageConsumer consumer;
> >> >> private Destination destinetionQueue;
> >> >> public Newconsumer(Connection con) {
> >> >> this.connection = con;
> >> >> try {
> >> >> session = this.connection.createSession(true,
> >> >> Session.AUTO_ACKNOWLEDGE);
> >> >> destinetionQueue = session.createQueue("RequestQueue");
> >> >> consumer = session.createConsumer(destinetionQueue);
> >> >> } catch (JMSException e) { }
> >> >> }
> >> >>
> >> >> public void close() {
> >> >> try {
> >> >> if( consumer != null ) consumer.close();
> >> >> if (session != null) session.close();
> >> >> } catch (JMSException e) { e.printStackTrace(); }
> >> >> }
> >> >>
> >> >> public void run() {
> >> >> while(true){
> >> >> try {
> >> >> Message msg = consumer.receive(10000);
> >> >> if ( msg == null ) continue;
> >> >> Destination destResp = ((MapMessage)
> >> msg).getJMSReplyTo()
> >> >> ;
> >> >> String sCorrelationID = ((MapMessage)
> >> >> msg).getJMSCorrelationID();
> >> >> String sAnkenID = ((MapMessage) msg).getString("ID");
> >> >> Session sessSend = this.connection.createSession(
> >> false,
> >> >> Session.AUTO_ACKNOWLEDGE);
> >> >> MapMessage msgTime = sessSend.createMapMessage();
> >> >> msgTime.setJMSCorrelationID( sCorrelationID);
> >> >> msgTime.setString( "ID",sAnkenID);
> >> >> msgTime.setLong("TIMEOUT",35000 );
> >> >> MessageProducer producer =
> >> >> sessSend.createProducer(destResp);
> >> >> producer.send(msgTime);
> >> >> MapMessage msgRes = session.createMapMessage();
> >> >> msgRes.setJMSCorrelationID( sCorrelationID);
> >> >> msgRes.setString( "ID",sAnkenID);
> >> >> msgRes.setString( "RESULT","SUCCESS");
> >> >> producer.send(msgRes);
> >> >> this.session.commit();
> >> >> producer.close();
> >> >> producer=null;
> >> >> sessSend.close();
> >> >> sessSend=null;
> >> >>
> >> >> } catch (JMSException e) { e.printStackTrace(); }
> >> >> break;
> >> >> }
> >> >> this.close();
> >> >> }
> >> >> }
> >> >>
> >> >> public class ConsumerController {
> >> >> public static Newconsumer consumer;
> >> >>
> >> >> public static void main(String[] args) throws NamingException {
> >> >> ActiveMQConnectionFactory factory;
> >> >> Connection connAnken;
> >> >> factory = new
> >> ActiveMQConnectionFactory("tcp://localhost:61616");
> >> >> try {
> >> >> connAnken = factory.createQueueConnection();
> >> >> connAnken.start();
> >> >> consumer = new Newconsumer(connAnken);
> >> >> consumer.start() ;
> >> >> try {
> >> >> while(true) {
> >> >> consumer.join();
> >> >> consumer =null;
> >> >> consumer = new Newconsumer(connAnken);
> >> >> consumer.start();
> >> >> }
> >> >> } catch (Throwable e) {
> >> >> e.printStackTrace();
> >> >> } finally{
> >> >> connAnken.close() ;
> >> >> connAnken=null;
> >> >> }
> >> >> } catch (Throwable e) { e.printStackTrace(); }
> >> >> }
> >> >> }
> >> >>
> >> >>
> >> >> activemq.xml
> >> >>
> >>
------------------------------------------------------------------------------------------
> >> >> <!-- START SNIPPET: example -->
> >> >> <beans xmlns="http://activemq.org/config/1.0">
> >> >> <bean
> >> >>
> >>
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
> >> >> <broker useJmx="true">
> >> >> <destinationPolicy>
> >> >> <policyMap><policyEntries>
> >> >> <policyEntry topic="FOO.>">
> >> >> <dispatchPolicy>
> >> >> <strictOrderDispatchPolicy />
> >> >> </dispatchPolicy>
> >> >> <subscriptionRecoveryPolicy>
> >> >> <lastImageSubscriptionRecoveryPolicy />
> >> >> </subscriptionRecoveryPolicy>
> >> >> </policyEntry>
> >> >> </policyEntries></policyMap>
> >> >> </destinationPolicy>
> >> >> <persistenceAdapter>
> >> >> <journaledJDBC journalLogFiles="5"
> >> >> dataDirectory="../activemq-data-0926" dataSource="#mysql-ds"/>
> >> >> </persistenceAdapter>
> >> >> <transportConnectors>
> >> >> <transportConnector name="default" uri="tcp://localhost:61616"
> >> >> discoveryUri="multicast://default"/>
> >> >> <transportConnector name="stomp"
> >> uri="stomp://localhost:61613"/>
> >> >> </transportConnectors>
> >> >> <networkConnectors>
> >> >> <networkConnector name="default" uri="multicast://default"/>
> >> >> </networkConnectors>
> >> >> </broker>
> >> >> <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource"
> >> >> destroy-method="close">
> >> >> <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
> >> >> <property name="url"
> >> >> value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
> >> >> <property name="username" value="activemq"/>
> >> >> <property name="password" value="activemq"/>
> >> >> <property name="poolPreparedStatements" value="true"/>
> >> >> </bean>
> >> >>
> >> >> </beans>
> >> >> <!-- END SNIPPET: example -->
> >> >>
> >> >> eclipse.ini
> >> >>
> >>
------------------------------------------------------------------------------------------
> >> >> -vmargs
> >> >> -Xms128M
> >> >> -Xmx512M
> >> >> -XX:PermSize=64M
> >> >> -XX:MaxPermSize=128M
> >> >>
> >> >> Thanks,
> >> >> Hu
> >> >> --
> >> >> View this message in context:
> >> >>
> >> http://www.nabble.com/Broker-used-up-the-memory-tf2316972.html#a6523894
> >> >> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
> >> >>
> >> >>
> >> >
> >> >
> >> > --
> >> >
> >> > James
> >> > -------
> >> > http://radio.weblogs.com/0112098/
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >> http://www.nabble.com/Broker-used-up-the-memory-tf2316972.html#a6524501
> >> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
> >>
> >>
> >
> >
> > --
> >
> > James
> > -------
> > http://radio.weblogs.com/0112098/
> >
> >
>
> --
> View this message in context:
http://www.nabble.com/Broker-used-up-the-memory-tf2316972.html#a6539530
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>
>
--
James
-------
http://radio.weblogs.com/0112098/