ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » WMB multi instance flows making JDBC connections

Post new topic  Reply to topic
 WMB multi instance flows making JDBC connections « View previous topic :: View next topic » 
Author Message
rian
PostPosted: Mon Feb 17, 2014 12:09 pm    Post subject: WMB multi instance flows making JDBC connections Reply with quote

Newbie

Joined: 17 Feb 2014
Posts: 2

Hi,

I have developed a message flow which has 2 nodes:
MQ Input --> Java Compute Node

The Java compute node gets certain fields from the incoming message and inserts a row using a prepared statement to Oracle DB using a custom java class. The custom java class creates a JDBC type 4 connection to the DB. This flow runs fine as long as there are few messages on the queue.

I tried a load test today by placing 5000 msgs in the queue to see how the flow performs. After writing about 1500 msgs to the DB, I started seeing "ORA-1000 Too many open cursors" error written in the log file. After reading the other forums and doing some investigation like monitoring the open cursors, I realized that Broker handles the JDBC connections but it leaves the management of prepared statements to the user custom code. So I added a preparedstatement.close() to the code and now the 5000 msgs were logged to the DB just fine.

This message flow is meant to be called by several services, so I want to increase the throughput of this flow. I increased the number of instances on the message flow to 5 and ran the same test again with 5000 msgs. This time only 4300 msgs get logged and I see the following messages repeatedly in the trace file

I have added a trace node to print the msgs at the failure terminal, it shows the following:

Code:

['MQROOT' : 0x1318ad80]
  (0x01000000:Name):RecoverableException = (
    (0x03000000:NameValue):File                 = 'F:\build\slot1\S800_P\src\DataFlowEngine\PluginInterface\ImbJniNode.cpp' (CHARACTER)
    (0x03000000:NameValue):Line                 = 1267 (INTEGER)
    (0x03000000:NameValue):Function             = 'ImbJniNode::evaluate' (CHARACTER)
    (0x03000000:NameValue):Type                 = 'ComIbmJavaComputeNode' (CHARACTER)
    (0x03000000:NameValue):Name                 = 'Handle_Logger_Messages#FCMComposite_1_3' (CHARACTER)
    (0x03000000:NameValue):Label                = 'Handle_Logger_Messages.Log message to DB' (CHARACTER)
    (0x03000000:NameValue):Catalog              = 'BIPmsgs' (CHARACTER)
    (0x03000000:NameValue):Severity             = 3 (INTEGER)
    (0x03000000:NameValue):Number               = 2230 (INTEGER)
    (0x03000000:NameValue):Text                 = 'Caught exception and rethrowing' (CHARACTER)
    (0x01000000:Name     ):RecoverableException = (
      (0x03000000:NameValue):File     = 'JDBCType4SinglePhaseTrxnHandlerErrors.java' (CHARACTER)
      (0x03000000:NameValue):Line     = 217 (INTEGER)
      (0x03000000:NameValue):Function = 'JDBCType4SinglePhaseTrxnHandler::getConnection with labels' (CHARACTER)
      (0x03000000:NameValue):Type     = '' (CHARACTER)
      (0x03000000:NameValue):Name     = '' (CHARACTER)
      (0x03000000:NameValue):Label    = '' (CHARACTER)
      (0x03000000:NameValue):Catalog  = 'BIPmsgs' (CHARACTER)
      (0x03000000:NameValue):Severity = 3 (INTEGER)
      (0x03000000:NameValue):Number   = 6233 (INTEGER)
      (0x03000000:NameValue):Text     = 'Cleaned up stale transactions for broken connection' (CHARACTER)
      (0x01000000:Name     ):Insert   = (
        (0x03000000:NameValue):Type = 5 (INTEGER)
        (0x03000000:NameValue):Text = 'Log message to DB' (CHARACTER)
      )
      (0x01000000:Name     ):Insert   = (
        (0x03000000:NameValue):Type = 5 (INTEGER)
        (0x03000000:NameValue):Text = 'jdbc:oracle:thin:xyz/password@dbserver.domain:1521:TESTDEV' (CHARACTER)
      )
      (0x01000000:Name     ):Insert   = (
        (0x03000000:NameValue):Type = 5 (INTEGER)
        (0x03000000:NameValue):Text = 'connection was reset' (CHARACTER)
      )
    )
  )
)


I am trying to find if I missing something obvious here. It seems to me that WMB is not managing the JDBC connections well when they are additional instances.

Thanks in advance!
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Tue Feb 18, 2014 9:14 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

I believe you may be having some expections on some db handling especially in the transactional behavior that are simply not true. Think about what is happening and why that might be happening. If you still think the broker should behave differently open a PMR and tell us what the answer was.

Have fun
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » WMB multi instance flows making JDBC connections
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.