Author |
Message
|
sevenM |
Posted: Thu Sep 16, 2004 12:27 am Post subject: Poor performance with large messages |
|
|
Novice
Joined: 16 Sep 2004 Posts: 14
|
Hello,
I have an environment where the put message performance is very poor. My environment:
pSeries 630, 4 CPU, 8GB RAM
AIX 5.1 ML5 64-bit kernel
MQSeries 5.3 ML7
J2RE 1.4.1 IBM AIX build ca1411-20030930
The problem is that when I put a large text message on a queue with a java client, the put process takes around 8 seconds for 1MB message. Strage thing is that if I use the java libraries (com.ibm.mq.jar) from the previous instalation (MQ V5.0) the put operation takes 500 miliseconds. My queues are not persistent, and I am not using JMS APIs to put the messages.
Any ideeas? Is there something completely wrong with my configuration?
Regards,
Horia |
|
Back to top |
|
 |
zpat |
Posted: Thu Sep 16, 2004 12:44 am Post subject: |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
You might check the JVM heap size and perhaps increase it. |
|
Back to top |
|
 |
sevenM |
Posted: Thu Sep 16, 2004 1:15 am Post subject: |
|
|
Novice
Joined: 16 Sep 2004 Posts: 14
|
That is not it. Do you think that 1GB max heap will sufice? I thik it will do. Anyway, I repeat, the performance is ok if I use a different com.ibm.mq.jar (the one installed with MQ V 5.0). But something is wrong here!!!
Regards,
Horia[/quote] |
|
Back to top |
|
 |
PGoodhart |
Posted: Thu Sep 16, 2004 4:24 am Post subject: |
|
|
Master
Joined: 17 Jun 2004 Posts: 278 Location: Harrisburg PA
|
Why didn't you post this in the Java forum? You might want to post your code. I am guessing that there was enough of a change from 5.2 to 5.3 that the code might need to be tweaked. If you are in a tight spot, I'd just use the 5.2 jar until you get it figured out.
Regards,
Patrick Goodhart _________________ Patrick Goodhart
MQ Admin/Web Developer/Consultant
WebSphere Application Server Admin |
|
Back to top |
|
 |
RogerLacroix |
Posted: Thu Sep 16, 2004 11:39 am Post subject: |
|
|
 Jedi Knight
Joined: 15 May 2001 Posts: 3264 Location: London, ON Canada
|
Hi sevenM,
I have 2 comments about your post.
First, the MA88 SupportPac (Java MQ libraries) was not released / supported until v5.1. I don't remember CSD.
Secondly, I just ran a client Java program (Java MQ libraries of v5.3 CSD7) from Windows connecting to a remote Solaris box with queue manager at v5.3 CSD7.
(1) I put 100 1.2MB messages (non-persistent) reading it from a file and putting it to the remote queue manager in 16 seconds (6 msgs per second).
(2) I put 1000 1KB messages (non-persistent) reading it from a file and putting it to the remote queue manager in 3 seconds (333 msgs per second).
So, I don't think there is anything wrong with the current MQ Java libraries.
Regards,
Roger Lacroix _________________ Capitalware: Transforming tomorrow into today.
Connected to MQ!
Twitter |
|
Back to top |
|
 |
sevenM |
Posted: Fri Sep 17, 2004 12:52 am Post subject: The problem seems to be related to AIX environment |
|
|
Novice
Joined: 16 Sep 2004 Posts: 14
|
Hello Roger,
My problem seems to be related to the AIX environment somehow, because I did more testing with the same java application and MQ v5.3 java libs and I was able to put 1MB messages to the remote MQ v5.3 running on AIX in 500 ms. This time the client application was run on a WinXP machine.
But if I run the same application and jars (the client application) on the same machine the server is residing on (AIX) the results are very poor. (1MB message is put in 8 seconds)
Any ideea?
Regards,
Horia |
|
Back to top |
|
 |
sevenM |
Posted: Fri Sep 17, 2004 1:06 am Post subject: And more on this issue |
|
|
Novice
Joined: 16 Sep 2004 Posts: 14
|
I have put the client application on another AIX machine and this time I am able to put 1MB messages on the remote MQ server at a rate of 3 messages/second (350 ms / message)
The client p630 machine is running with AIX5.1 ML5 - 32 bit kernel. Can this be related somehow to 64 bit kernel?
Regards,
Horia |
|
Back to top |
|
 |
sevenM |
Posted: Fri Sep 17, 2004 2:46 am Post subject: |
|
|
Novice
Joined: 16 Sep 2004 Posts: 14
|
Damn thing!
More surprising testing: I run the client application on the 64-bit AIX kernel and send messages to the remote 32-bit AIX kernel witch hosts an MQ v5.0. server. Everything is OK.
Why, oh why if I send messages to the local machine things are running so slow?
Testing summary:
Machine1: AIX 5.1 ML5 64-bit kernel, MQ v5.3 server
Machine2: AIX 5.1 ML5 32-bit kernel, MQ v5.0 server
Machine3: WinXP SP1
Client Application: simple java app that is sending 1MB messages to a queue (not using JMS API) using MQ v5.3 ML7 client libs
Scenario1: Client app on Machine3, sending messages to Machine1: OK
Scenario2: Client app on Machine3, sending messages to Machine2: OK
Scenario3: Client app on Machine2, sending messages to Machine1: OK
Scenario4: Client app on Machine2, sending messages to Machine2: OK
Scenario5: Client app on Machine1, sending messages to Machine2: OK
Scenario6: Client app on Machine1, sending messages to Machine1: WRONG
Any ideeas?
Regards,
Horia |
|
Back to top |
|
 |
RogerLacroix |
Posted: Fri Sep 17, 2004 8:44 am Post subject: |
|
|
 Jedi Knight
Joined: 15 May 2001 Posts: 3264 Location: London, ON Canada
|
Hi,
In Scenario6, are you connecting in 'client' or 'binding' mode? If you are connecting in client mode then try using binding mode because it should be much, much faster.
Regards,
Roger Lacroix _________________ Capitalware: Transforming tomorrow into today.
Connected to MQ!
Twitter |
|
Back to top |
|
 |
PeterPotkay |
Posted: Fri Sep 17, 2004 8:46 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
But no slower than the other scenarios where he is a client, right? It should be at least as fast as those scenarios.
 _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
bower5932 |
Posted: Fri Sep 17, 2004 8:49 am Post subject: |
|
|
 Jedi Knight
Joined: 27 Aug 2001 Posts: 3023 Location: Dallas, TX, USA
|
I haven't been following this thread closely. However, I'll still put in my two cents on my experience. The one thing that we've seen people get bit by when doing performance testing is the number of messages on the queue. If you overflow the queue buffer (ie, memory), then the messages (whether non-persistent or persistent) have to be stored somewhere (ie, dasd). So, in your testing, you aren't putting messages onto a full queue? |
|
Back to top |
|
 |
PeterPotkay |
Posted: Fri Sep 17, 2004 8:53 am Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Good point. Maybe Scenario 1 and 3 loaded the queue. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
sevenM |
Posted: Sun Sep 19, 2004 11:18 pm Post subject: |
|
|
Novice
Joined: 16 Sep 2004 Posts: 14
|
Hello Roger,
Unfortunately I don't know the diffefence between 'client' and 'binding' modes. Could you be so kind and point me to some info?
In all the scenarios, I was using the same mode anyway, whatever this is.
Regards,
Horia |
|
Back to top |
|
 |
sevenM |
Posted: Sun Sep 19, 2004 11:24 pm Post subject: |
|
|
Novice
Joined: 16 Sep 2004 Posts: 14
|
Hello bower5932 and Peter,
After each scenario, the queue was cleared, (by another app that consumed it), so before any testing, the queue was empty.
And in scenario 6, if I use the jar that is installed with MQ V5.0. , the performance is OK.
<quote>
But no slower than the other scenarios where he is a client, right? It should be at least as fast as those scenarios.
</quote>
I don't understand your question Peter....
In scenario 6, the put operation takes around 8 seconds. In all other scenarios, the put operation takes around 500 miliseconds.
Regards,
Horia |
|
Back to top |
|
 |
sevenM |
Posted: Sun Sep 19, 2004 11:41 pm Post subject: |
|
|
Novice
Joined: 16 Sep 2004 Posts: 14
|
Hi Roger,
I found something about 'binding' and 'client' modes. As I understand it, the 'binding' mode can be enabled only if the client application is running on the same machine as the server and in order to enable it, one needs to set LD_LIBRARY_PATH to point to /usr/mqm/java/lib/ directory. This way, the MQ driver will use native code through JNI.
If this is the case, all scenarios were run in 'client' mode.
Regards,
Horia
P.S. I will make some tests with scenario 6 in 'binding' mode. But first I guess I have to install the support for 64-bit client applications, right? |
|
Back to top |
|
 |
|