temporary destinations add additional overhead because to be compliant with the JMS specification, a messaging system needs to validate that the temporary destination exists before sending every message. To avoid slowing delivery of messages to a crawl to a temporary queue, ActiveMQ sends advisory messages to every client on creation/deletion of a temporary destination. Hence if you are constantly creating/ destroying temporary destinations, you are creating a lot of additional chatter.

Not ideal - but at least this should explain what is happening. You can disable advisory messages - see http://activemq.apache.org/advisory-message.html .

On 19 Oct 2009, at 01:17, mquestioner wrote:


Yeah... by reusing the same temporary queues, the problem goes away. (We used 1 temp queue per request because the requests were originated at different threads. We changed to use a fixed set of temp queues, listeners, and local
dispatching to work around.)

But this seems just fix the symptoms. If supposedly, one has many clients come and go and each of them would have to create at least some queues; the system would still be slowed down. The bottomline is that creating temp
queues should not slow down others.


aortiz wrote:

You should not create the session and temporary queue for every request. You should create them when you create the client [1] (or at least cache
them). These operations are expensive and require remote calls to the
broker.

The slowdown of faster clients may be due to Producer Flow Control [2],
which is enabled by default.

-Andres
[1]
http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html
[2] http://activemq.apache.org/producer-flow-control.html


mquestioner wrote:

Thanks. Will try.

More detail about the client is that when we send a queue request, we do

- create a Session
- create a TemporaryQueue

I wonder if these two will be broadcasting something to the other clients
and cause the backlog. Shouldn't be, but...



rajdavies wrote:

Does this behaviour change if you use the latest snapshot ?

thanks,

Rob
On 20 Jul 2009, at 03:51, mquestioner wrote:


Hi,

We have a case where a consumer connected through a slow connection
would
slow down the fast consumer. I have already
http://activemq.apache.org/slow-consumers.html and
http://activemq.apache.org/slow-consumer-handling.html However,
there are
specific advises do not seem applicable to our scenario.

Out set up looks like:
The server
 Constantly broadcasting non-persistent messages over a topic (a)
 Listen on a number of persistent and non-persistent queues to
process
messages asynchronously (Listener) (b)
   Reply to the temporary queue of the request (c)

The client
 Listen to the broadcast messages in background (d)
 Make request to the queues (e)
    Wait for reply (f)

When the clients are on fast connection, everything is fine.
However, once a
slow connecting client joins, we observe:

1) (e) and (f) of the fast client become extremely sluggish instantly.

2) Timestamp logging of (b) and (c) shows that the server still
takes very
little time to process each request, ruling out problems such as DB
bottleneck. On the other hand, the messaging waiting time (time at
the entry
of the listner - msg.getJMStimestamp()) increases by 50-100X

3) Either killing the slow connecting client or stop broadcasting
message
will have things return to normal

The strange thing is that, according to
http://activemq.apache.org/slow-consumers.html, ``A slow consumer is
not
really an issue with queues.'' And that the problem occurs almost
instantly
after the slow connection is established, it seems too short for any
memory
usage built-up; and indeed no such problem is observed. We also try
twisting
ActiveMQ broker and consumer settings like prefetchsize=2000,
dedicated task
runner = true/false,  increase memoryLimit/memoryUsage,
optimizedDispatch=true. None seems to solve the problem.

What would be the causes and solutions for these scenario?

(The ActiveMQ site's suggestions of discarding old messages would
create
stale data problems for our application.)

Thanks a lot!


--
View this message in context:
http://www.nabble.com/Slow-consumers-slow-down-fast-consumer-queue-requests-tp24563120p24563120.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.









--
View this message in context: 
http://www.nabble.com/Slow-consumers-slow-down-fast-consumer-queue-requests-tp24563120p25951782.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Rob Davies
http://twitter.com/rajdavies
I work here: http://fusesource.com
My Blog: http://rajdavies.blogspot.com/
I'm writing this: http://www.manning.com/snyder/





Reply via email to