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 » SOAPRequest node slowness

Post new topic  Reply to topic Goto page 1, 2, 3  Next
 SOAPRequest node slowness « View previous topic :: View next topic » 
Author Message
Esa
PostPosted: Wed Feb 08, 2012 6:53 am    Post subject: SOAPRequest node slowness Reply with quote

Grand Master

Joined: 22 May 2008
Posts: 1387
Location: Finland

Hi,

I have been testing a MessageFlow that acts as a service facade. It just redirects the calls to the actual endpoint and does not transform the messages.

When the endpoint service is called directly from SOAPUI, response times vary between 15 and 30 ms. But when I call the service via the message flow, response times are normally over 300 ms.

I have tested this on 6.1.0.5 and 7.0.0.3 on AIX. The results are the same regrdless of SSL protocol used (TLS, SSL, SSLv3).

I have run user trace and it reveals that the flow itself runs in 2 ms, but the SOAPRequest call takes over 230 ms.

Has anybody else noticed the same? What can be done about it? Is SOAPRequest node just slow or can there be something in the network causing latency? Ping from the broker to the endpoint is faster than from the SOAPUI workstation.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Wed Feb 08, 2012 6:56 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

Does the flow actually parse the message and validate it, even if it doesn't transform it?

Does a service trace indicate more information about exactly where the SoapRequest node is taking the most time?
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Wed Feb 08, 2012 6:56 am    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

There are WMB runtime configuration parameters that affect how SOAPRequests are handled from inside WMB. If you fail to set these, defaults are used, which may not yield the best, most optimized performance.

I would love to have latency of 300 ms !! Most of my downstream providers have latency measured in seconds (5 seconds, 7 seconds, 13 seconds). Whether WMB runtime takes 15 ms or 300 ms to process a SOAPRequest is not relevant in the larger picture of latency in the seconds.
_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
Esa
PostPosted: Wed Feb 08, 2012 7:36 am    Post subject: Reply with quote

Grand Master

Joined: 22 May 2008
Posts: 1387
Location: Finland

mqjeff wrote:
Does the flow actually parse the message and validate it, even if it doesn't transform it?

Yes, it validates it.
mqjeff wrote:
Does a service trace indicate more information about exactly where the SoapRequest node is taking the most time?


Yes, between 'sending SOAP request' and 'received a SOAP response':

Code:
2012-02-02 09:31:59.874548    16192   UserTrace   BIP3615I: SOAP message written with '0' MTOM elements.
2012-02-02 09:31:59.874664    16192   UserTrace   BIP3719I: Node 'Request' sending SOAP request via transport 'HTTP' ('xxx.yyy.com:443') for operation 'Operation' of type 'request-response'.
                                       See subsequent messages for success or failure messages relating to this request, and for any transport-specific messages.
                                       No action required.
2012-02-02 09:32:00.112535    16192   UserTrace   BIP3720I: Node 'Request' received a SOAP response message via transport 'HTTP' ('xxx.yyy.com:443') for operation 'Operation'.
                                       The broker sent a SOAP request, and has received a response.
                                       No action required.


lancelotlinc wrote:
There are WMB runtime configuration parameters that affect how SOAPRequests are handled from inside WMB. If you fail to set these, defaults are used, which may not yield the best, most optimized performance.

I would love to have latency of 300 ms !! Most of my downstream providers have latency measured in seconds (5 seconds, 7 seconds, 13 seconds). Whether WMB runtime takes 15 ms or 300 ms to process a SOAPRequest is not relevant in the larger picture of latency in the seconds.


In this case 100 milliseconds matter.
Please give a little more hints about the configuration parameters.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Wed Feb 08, 2012 7:39 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

That's still a User Trace.

Take a Service Trace and see if it provides more granularity between those two user trace events. Service trace will still report User Trace events, so you will be able to quickly skip the irrelevant details by looking for the same User Trace event.

If the input node is parsing and validating the message, then the SoapRequest node has to re-serialize the message tree. This may be taking an unfortunate amount of time, although it shouldn't.

In addition, if you are doing things with WS-Addressing, WS-Security or MTOM this may also affect the serialization/transmission time.
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Wed Feb 08, 2012 7:45 am    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

Are these parameters configured, if applicable?

- Truststore
- Keystore
- Certificate import
- Policy sets (you need more than one if using WS-Security)
- Policy set bindings
- Message set with WSDL and XSDs imported
- Don't use wildcards in URL path suffix
- Are your SOAP nodes configured for use in Gateway mode?
- Did you set the Uid/Pwd properly/most efficiently in the SOAP header?
_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
Esa
PostPosted: Wed Feb 08, 2012 8:09 am    Post subject: Reply with quote

Grand Master

Joined: 22 May 2008
Posts: 1387
Location: Finland

mqjeff wrote:
That's still a User Trace.

Take a Service Trace and see if it provides more granularity between those two user trace events. Service trace will still report User Trace events, so you will be able to quickly skip the irrelevant details by looking for the same User Trace event.

If the input node is parsing and validating the message, then the SoapRequest node has to re-serialize the message tree. This may be taking an unfortunate amount of time, although it shouldn't.

In addition, if you are doing things with WS-Addressing, WS-Security or MTOM this may also affect the serialization/transmission time.


Well, the request Body contains just the name of the operation, so re-serializing it should not take long.

Here is the service trace. As far as i can tell it doesn not tell anything new. Instead of rolling its thumbs while it waits for the response the execution group checks if it should refresh the open handle cache.


Code:
2012-02-08 16:45:30.328856    26289                        >> ImbSOAPRequestNode::requestData file:/build/S610_P/src/WebServices/WSLibrary/ImbSOAPRequestNode.cpp line:1091 message:3719.BIPv610 TestServiceFlow#FCMComposite_1_1.gen/_etListOfTypeDesignations_TestServiceFlow#FCMComposite_1_1 ImbRequestTemplateNode 'Sending SOAP request' , 'Request', 'HTTP', 'webtest10.scania.com:443', 'Operation', 'request-response', TestServiceFlow.Request
2012-02-08 16:45:30.328856    26289                        >>   UserTrace   BIP3719I: Node 'TestServiceFlow.Request' sending SOAP request via transport 'HTTP' ('xxx.yyy.com:443') for operation 'Operation' of type 'request-response'.
                                       See subsequent messages for success or failure messages relating to this request, and for any transport-specific messages.
                                       No action required.
2012-02-08 16:45:30.508368    10538 { ImbOpenQueueCache::removeOldEntries   , 60,
2012-02-08 16:45:30.508404    10538 } ImbOpenQueueCache::removeOldEntries   ,
2012-02-08 16:45:30.508412    10538 { ImbAsymetricMutex::LeftMutex::unlock   ,
2012-02-08 16:45:30.508420    10538 } ImbAsymetricMutex::LeftMutex::unlock   , 1,
2012-02-08 16:45:30.508422    10538 { ImbAsymetricMutex::LeftMutex::lock   , 1000,
2012-02-08 16:45:30.508426    10538 } ImbAsymetricMutex::LeftMutex::lock   , 1,
2012-02-08 16:45:30.558696    16706 { ImbOpenQueueCache::removeOldEntries   , 60,
2012-02-08 16:45:30.558752    16706 } ImbOpenQueueCache::removeOldEntries   ,
2012-02-08 16:45:30.558776    16706 { ImbAsymetricMutex::LeftMutex::unlock   ,
2012-02-08 16:45:30.558784    16706 } ImbAsymetricMutex::LeftMutex::unlock   , 1,
2012-02-08 16:45:30.558788    16706 { ImbAsymetricMutex::LeftMutex::lock   , 1000,
2012-02-08 16:45:30.558794    16706 } ImbAsymetricMutex::LeftMutex::lock   , 1,
2012-02-08 16:45:30.588582    15421 { ImbOpenQueueCache::removeOldEntries   , 60,
2012-02-08 16:45:30.588608    15421 } ImbOpenQueueCache::removeOldEntries   ,
2012-02-08 16:45:30.588616    15421 { ImbAsymetricMutex::LeftMutex::unlock   ,
2012-02-08 16:45:30.588622    15421 } ImbAsymetricMutex::LeftMutex::unlock   , 1,
2012-02-08 16:45:30.588624    15421 { ImbAsymetricMutex::LeftMutex::lock   , 1000,
2012-02-08 16:45:30.588630    15421 } ImbAsymetricMutex::LeftMutex::lock   , 1,
2012-02-08 16:45:30.588688    13365 { ImbOpenQueueCache::removeOldEntries   , 60,
2012-02-08 16:45:30.588710    13365 } ImbOpenQueueCache::removeOldEntries   ,
2012-02-08 16:45:30.588720    13365 { ImbAsymetricMutex::LeftMutex::unlock   ,
2012-02-08 16:45:30.588724    13365 } ImbAsymetricMutex::LeftMutex::unlock   , 1,
2012-02-08 16:45:30.588730    13365 { ImbAsymetricMutex::LeftMutex::lock   , 1000,
2012-02-08 16:45:30.588734    13365 } ImbAsymetricMutex::LeftMutex::lock   , 1,
2012-02-08 16:45:30.679392    26289                        >> ImbSOAPRequestNode::requestData file:/build/S610_P/src/WebServices/WSLibrary/ImbSOAPRequestNode.cpp line:1255 message:3720.BIPv610 TestServiceFlow#FCMComposite_1_1.gen/_etListOfTypeDesignations_TestServiceFlow#FCMComposite_1_1 ImbRequestTemplateNode 'Received SOAP reply' , 'TestServiceFlow.Request', 'HTTP', 'xxx.yyy.com:443', 'Operation', TestServiceFlow.Request
2012-02-08 16:45:30.679392    26289                        >>   UserTrace   BIP3720I: Node 'TestServiceFlow.Request' received a SOAP response message via transport 'HTTP' ('xxx.yyy.com:443') for operation 'Operation'.
                                       The broker sent a SOAP request, and has received a response.
Back to top
View user's profile Send private message
Esa
PostPosted: Wed Feb 08, 2012 8:16 am    Post subject: Reply with quote

Grand Master

Joined: 22 May 2008
Posts: 1387
Location: Finland

lancelotlinc wrote:
Are these parameters configured, if applicable??


- Truststore -yes
- Keystore -yes
- Certificate import -yes

- Policy sets (you need more than one if using WS-Security)
- Policy set bindings -N/A, the flow does not authenticate


- Message set with WSDL and XSDs imported -yes
- Don't use wildcards in URL path suffix -OK


- Are your SOAP nodes configured for use in Gateway mode?
-this feature was not available in V6.1. I can test this on 7.0.0.3 tomorrow

- Did you set the Uid/Pwd properly/most efficiently in the SOAP header
- what is the most efficient way?
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Wed Feb 08, 2012 8:24 am    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

Esa wrote:
lancelotlinc wrote:
Are these parameters configured, if applicable??

- Did you set the Uid/Pwd properly/most efficiently in the SOAP header
- what is the most efficient way?


Hard coding would give the best performance. Else, I use UDPs for User Ids and we call a Web Service prior to every downstream call to get the most current downstream password. BFOs override the User Ids for each environment type (DevInt, Test, Perf, Prod).
_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
Esa
PostPosted: Wed Feb 08, 2012 8:36 am    Post subject: Reply with quote

Grand Master

Joined: 22 May 2008
Posts: 1387
Location: Finland

Well, the thing is that I sent exactly the same request from SOAPUI to the broker and directly to the endpoint. And there is a gap of 230 ms that cannot be explained with the location of credentials, because it should be slow with the direct call, too.

The flow does not authenticate the message, it just passes the envelope as it is.
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Wed Feb 08, 2012 8:40 am    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

Esa wrote:
Well, the thing is that I sent exactly the same request from SOAPUI to the broker and directly to the endpoint. And there is a gap of 230 ms that cannot be explained with the location of credentials, because it should be slow with the direct call, too.

The flow does not authenticate the message, it just passes the envelope as it is.


You are not using a valid use case to do performance testing. WMB brings two main values to the ESB equation: content based routing and transformation.

If you want a pure gateway, use WebSphere Datapower Xi50. Your not being fair in your assessment because you are asking WMB to do something that is not in its repertoire of strengths.

I can get milk from a cow or a goat. If cow's milk is what I want, I will be disappointed with goat's milk.
_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
mqjeff
PostPosted: Wed Feb 08, 2012 8:45 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

Did you confirm that dns name resolution and network latency between the broker aix host and the service provider are not at fault here?

i.e. did you try something like cURL from the AIX host to send the same request directly?

You might also want to set up wireShark or some kind of tcp/ip proxy between the broker and the endpoint to see if you can further isolate the source of the latency.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Wed Feb 08, 2012 8:46 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

lancelotlinc wrote:
You are not using a valid use case to do performance testing. WMB brings two main values to the ESB equation: content based routing and transformation.

WMB is a general purpose stateless application development environment.

If one happens to decide to use it for an ESB, that's all well and good.
Back to top
View user's profile Send private message
Esa
PostPosted: Wed Feb 08, 2012 8:48 am    Post subject: Reply with quote

Grand Master

Joined: 22 May 2008
Posts: 1387
Location: Finland

lancelotlinc wrote:
If you want a pure gateway, use WebSphere Datapower Xi50. Your not being fair in your assessment because you are asking WMB to do something that is not in its repertoire of strengths.


I certainly would use DP if I was in the position to make the decision. the question behind these tests is: should the client be allowed to access the endpoint direcly because MB (or the network) cannot give better response times.
Back to top
View user's profile Send private message
lancelotlinc
PostPosted: Wed Feb 08, 2012 8:51 am    Post subject: Reply with quote

Jedi Knight

Joined: 22 Mar 2010
Posts: 4941
Location: Bloomington, IL USA

@mqjeff: very true, sir. I agree.

I am merely pointing out that Esa's use case is outside the sweetspot. Yes, WMB can do what Esa is asking it to do. But if his expectation is for WMB to provide the same performance as Datapower, he will not be satisfied.
_________________
http://leanpub.com/IIB_Tips_and_Tricks
Save $20: Coupon Code: MQSERIES_READER
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2, 3  Next Page 1 of 3

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SOAPRequest node slowness
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.