You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Bhupendra Bhardwaj (JIRA)" <qp...@incubator.apache.org> on 2007/03/01 16:22:51 UTC

[jira] Created: (QPID-395) There needs to be a pause between batches of messages produced by the client to avoid OutOfMemory error

There needs to be a pause between batches of messages produced by the client to avoid OutOfMemory error
-------------------------------------------------------------------------------------------------------

                 Key: QPID-395
                 URL: https://issues.apache.org/jira/browse/QPID-395
             Project: Qpid
          Issue Type: Bug
          Components: Java Performance Tests
            Reporter: Bhupendra Bhardwaj
         Assigned To: Bhupendra Bhardwaj
            Priority: Minor


The Mina layer throws OutOfMemoryError if the messages of high size like 100k are sent with non-transacted clients.
To avoid this, a pause of few seconds needs to be set between each batch of messages.
The error is - 

Exception in thread "Thread-2" java.lang.OutOfMemoryError: Java heap space
org.apache.mina.filter.codec.ProtocolEncoderException: java.lang.OutOfMemoryError: Java heap space
        at org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:241)
        at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(AbstractIoFilterChain.java:573)
        at org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:52)
        at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(AbstractIoFilterChain.java:789)
        at org.apache.mina.common.support.AbstractIoFilterChain$2.filterWrite(AbstractIoFilterChain.java:213)
        at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(AbstractIoFilterChain.java:573)
        at org.apache.mina.common.support.AbstractIoFilterChain.fireFilterWrite(AbstractIoFilterChain.java:564)
        at org.apache.mina.transport.socket.nio.SocketSessionImpl.write0(SocketSessionImpl.java:186)
        at org.apache.mina.common.support.BaseIoSession.write(BaseIoSession.java:146)
        at org.apache.mina.common.support.BaseIoSession.write(BaseIoSession.java:132)
        at org.apache.qpid.client.protocol.AMQProtocolSession.writeFrame(AMQProtocolSession.java:282)
        at org.apache.qpid.client.protocol.AMQProtocolHandler.writeFrame(AMQProtocolHandler.java:422)
        at org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:508)
        at org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:420)
        at org.apache.qpid.client.BasicMessageProducer.send(BasicMessageProducer.java:297)
        at org.apache.qpid.requestreply.PingPongProducer.sendMessage(PingPongProducer.java:1206)
        at org.apache.qpid.requestreply.PingPongProducer.pingNoWaitForReply(PingPongProducer.java:871)
        at org.apache.qpid.requestreply.PingPongProducer.pingAndWaitForReply(PingPongProducer.java:782)
        at org.apache.qpid.requestreply.PingPongProducer.pingAndWaitForReply(PingPongProducer.java:742)
        at org.apache.qpid.ping.PingAsyncTestPerf.testAsyncPingOk(PingAsyncTestPerf.java:177)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at uk.co.thebadgerset.junit.extensions.AsymptoticTestCase.runTest(AsymptoticTestCase.java:225)
        at junit.framework.TestCase.runBare(TestCase.java:127)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at uk.co.thebadgerset.junit.extensions.TKTestResult.run(TKTestResult.java:382)
        at junit.framework.TestCase.run(TestCase.java:118)
        at junit.framework.TestSuite.runTest(TestSuite.java:208)
        at junit.framework.TestSuite.run(TestSuite.java:203)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
        at junit.extensions.TestDecorator.run(TestDecorator.java:28)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
        at junit.extensions.TestDecorator.run(TestDecorator.java:28)
        at uk.co.thebadgerset.junit.extensions.AsymptoticTestDecorator.run(AsymptoticTestDecorator.java:159)
        at uk.co.thebadgerset.junit.extensions.ScaledTestDecorator$TestThreadHandler.run(ScaledTestDecorator.java:268)
        at java.lang.Thread.run(Thread.java:595)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (QPID-395) There needs to be a pause between batches of messages produced by the client to avoid OutOfMemory error

Posted by "Bhupendra Bhardwaj (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Bhupendra Bhardwaj resolved QPID-395.
-------------------------------------

    Resolution: Fixed

Testsclasses are updated to accpet a pause parameter. This is needed in tests which are non-transacted. Becasue transacted tests have a  commit call, which gives enough time to mina IOFilter chain to clear the cache.
On average a commit call takes 1.8 sec to complete when batch of 100 messages of size 100KB are sent.
If we upgrade the mina this pause might not be needed but that can't be said unless we upgradfe and test.

> There needs to be a pause between batches of messages produced by the client to avoid OutOfMemory error
> -------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-395
>                 URL: https://issues.apache.org/jira/browse/QPID-395
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Performance Tests
>            Reporter: Bhupendra Bhardwaj
>         Assigned To: Bhupendra Bhardwaj
>            Priority: Minor
>
> The Mina layer throws OutOfMemoryError if the messages of high size like 100k are sent with non-transacted clients.
> To avoid this, a pause of few seconds needs to be set between each batch of messages.
> The error is - 
> Exception in thread "Thread-2" java.lang.OutOfMemoryError: Java heap space
> org.apache.mina.filter.codec.ProtocolEncoderException: java.lang.OutOfMemoryError: Java heap space
>         at org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:241)
>         at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(AbstractIoFilterChain.java:573)
>         at org.apache.mina.common.support.AbstractIoFilterChain.access$1200(AbstractIoFilterChain.java:52)
>         at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.filterWrite(AbstractIoFilterChain.java:789)
>         at org.apache.mina.common.support.AbstractIoFilterChain$2.filterWrite(AbstractIoFilterChain.java:213)
>         at org.apache.mina.common.support.AbstractIoFilterChain.callPreviousFilterWrite(AbstractIoFilterChain.java:573)
>         at org.apache.mina.common.support.AbstractIoFilterChain.fireFilterWrite(AbstractIoFilterChain.java:564)
>         at org.apache.mina.transport.socket.nio.SocketSessionImpl.write0(SocketSessionImpl.java:186)
>         at org.apache.mina.common.support.BaseIoSession.write(BaseIoSession.java:146)
>         at org.apache.mina.common.support.BaseIoSession.write(BaseIoSession.java:132)
>         at org.apache.qpid.client.protocol.AMQProtocolSession.writeFrame(AMQProtocolSession.java:282)
>         at org.apache.qpid.client.protocol.AMQProtocolHandler.writeFrame(AMQProtocolHandler.java:422)
>         at org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:508)
>         at org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:420)
>         at org.apache.qpid.client.BasicMessageProducer.send(BasicMessageProducer.java:297)
>         at org.apache.qpid.requestreply.PingPongProducer.sendMessage(PingPongProducer.java:1206)
>         at org.apache.qpid.requestreply.PingPongProducer.pingNoWaitForReply(PingPongProducer.java:871)
>         at org.apache.qpid.requestreply.PingPongProducer.pingAndWaitForReply(PingPongProducer.java:782)
>         at org.apache.qpid.requestreply.PingPongProducer.pingAndWaitForReply(PingPongProducer.java:742)
>         at org.apache.qpid.ping.PingAsyncTestPerf.testAsyncPingOk(PingAsyncTestPerf.java:177)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at uk.co.thebadgerset.junit.extensions.AsymptoticTestCase.runTest(AsymptoticTestCase.java:225)
>         at junit.framework.TestCase.runBare(TestCase.java:127)
>         at junit.framework.TestResult$1.protect(TestResult.java:106)
>         at junit.framework.TestResult.runProtected(TestResult.java:124)
>         at junit.framework.TestResult.run(TestResult.java:109)
>         at uk.co.thebadgerset.junit.extensions.TKTestResult.run(TKTestResult.java:382)
>         at junit.framework.TestCase.run(TestCase.java:118)
>         at junit.framework.TestSuite.runTest(TestSuite.java:208)
>         at junit.framework.TestSuite.run(TestSuite.java:203)
>         at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>         at junit.extensions.TestDecorator.run(TestDecorator.java:28)
>         at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
>         at junit.extensions.TestDecorator.run(TestDecorator.java:28)
>         at uk.co.thebadgerset.junit.extensions.AsymptoticTestDecorator.run(AsymptoticTestDecorator.java:159)
>         at uk.co.thebadgerset.junit.extensions.ScaledTestDecorator$TestThreadHandler.run(ScaledTestDecorator.java:268)
>         at java.lang.Thread.run(Thread.java:595)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.