Posted: Tue Sep 21, 2004 1:49 am Post subject: Performance issues with Visual Basic, MTS and MQ COM object
Newbie
Joined: 21 Sep 2004 Posts: 1
Hi
We have written a wrapper to control access and make using MQ simpler for our web developers.
We have done this using VB and the IBM com object model. we have no experience or knowledge of how to create com objects using C++.
We have found that performance is not as good as we would like. The code seems stable and the program starts to get CPU bound quite quickly when loadtesting it.
Although this seems to be a case where the more users we add the longer the responce times are we can therefore resolve this to some extent by adding machines with more powerfull cpus and more machines.
I have written the com object so that it has state but only as long as the call lasts. So each call from a web page connects to the qmanager, opens the queues and then sends and recieves a message or just sends a message.
My hunch is that doing all this connection processing and then disconnecting is putting a large load on for each client. The process also reads a xml file which drives the process or service. I would basically like to keep the connections between calls and share them between clients using the same service initially and a different service using the same connection handle but creating new object handles for the diferent queues I am opening.
In the IBM documentation I have read that using MQCONNX I can set the the connections to shared by using the MQCNO_HANDLE_SHARE_BLOCK or hex 40. This constant does not seem to be available to the IBM COM objects I am using (MQ version 5.3). However I do have the ability to change the connection option values. However I can only set this after creating the qmanager object using the factory class in the session object.
It also says that hconn handles and object handles can be shared between threads until the connection to MQ is disconnected.
Due to the fact that I have only written MS applications in VB my knowledge of COM is limited to VBs view of com.
I have read and reread books about MTS features and have looked at the possiblility of pooling the connection objects however this does not seem to be available in VB version 6 and MTS running under Windows NT. Although there seems to be an interface which would allow you to connect to an object, which can be pooled, if a pooling application existed.
I have read the information in the latest support pack for MQ which makes it seem quite simple to achieve what I am trying to achieve in VB.NET however my company has no intention of moving to .NET now or in the near future.
I would be happy to hear from anyone, who has similar problems or has
any suggestions how I could pool objects in MTS or how to use the features in MQCONNX so that my application reuses the connection handles and object handles with the IBM COM object model. Knowledge of where I can find examples or examples would be helpfull
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