Mahfuzul Huda
Mahfuzul Huda

Reputation: 21

Weblogic (11g with Weblogic81 polling option) MDB is not reading all the messages in TIBCO EMS queue

We have a java application deployed in Weblogic where MDB connects to TIBCO EMS. There are 3 queues in TIBCO as in queues for Weblogic and 3 as out queues. Weblogic JVM creates 32 consumers (for each in queues) at the time of start up and listens to the queue. In TIBCO EMS queue prefetch value is 5. After receiving the message weblogic connects to Oracle DB to process and write response to TIBCO EMS out queue.

We have 2 standalone servers each with 4 JVMs, each having 32 consumers connected to in queues.

There is a custom workmanager introduced with Min and max thread constraint as 32.

On a high volume day, when transaction reaches around 400 tps, messages starts to pile up in TIBCO EMS queue.

What should be the reason of pile up? How many Poller thread will be there working at a time? How to calculate for this tps, what should be my JVM and consumer count.

It works in normal volume, high volume it starts to pile up

Latest Update: We have identified that while writing the response to TIBCO OUT queue, application is doing JNDI lookup. JNDI lookup time increases along with transaction volume. For each response application does JNDI lookup, create connection and close connection.

Question:

  1. Why it takes time to do lookup? Anyway to reduce the time? (what is the bottleneck? CPU, memory? Weblogic or TIBCO?)
  2. Can we avoid JNDI lookup for foreign queue?
  3. Any other way to handle this?

Upvotes: 2

Views: 52

Answers (1)

EmmanuelM
EmmanuelM

Reputation: 412

If you see messages pilling up in an EMS queue this is because the Producer application send messages at a faster rate than the Consumer application is consuming them.

While you already have two application instances each configured with 32 threads I would recommend to check cpu and memory usage when there is a high message throughput. This would help understand where is the bottleneck.

One thing also from your question I understand the consumer application is doing database updates, I would recommend to check the number of database connections you have in the consumer application ? (if you have 32 threads to process JMS messages you should have at least 32 connections).

Upvotes: 1

Related Questions