|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
SOAPRequest node slowness |
« View previous topic :: View next topic » |
Author |
Message
|
Esa |
Posted: Wed Feb 08, 2012 6:53 am Post subject: SOAPRequest node slowness |
|
|
 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 |
|
 |
mqjeff |
Posted: Wed Feb 08, 2012 6:56 am Post subject: |
|
|
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 |
|
 |
lancelotlinc |
Posted: Wed Feb 08, 2012 6:56 am Post subject: |
|
|
 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 |
|
 |
Esa |
Posted: Wed Feb 08, 2012 7:36 am Post subject: |
|
|
 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 |
|
 |
mqjeff |
Posted: Wed Feb 08, 2012 7:39 am Post subject: |
|
|
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 |
|
 |
lancelotlinc |
Posted: Wed Feb 08, 2012 7:45 am Post subject: |
|
|
 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 |
|
 |
Esa |
Posted: Wed Feb 08, 2012 8:09 am Post subject: |
|
|
 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 |
|
 |
Esa |
Posted: Wed Feb 08, 2012 8:16 am Post subject: |
|
|
 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 |
|
 |
lancelotlinc |
Posted: Wed Feb 08, 2012 8:24 am Post subject: |
|
|
 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 |
|
 |
Esa |
Posted: Wed Feb 08, 2012 8:36 am Post subject: |
|
|
 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 |
|
 |
lancelotlinc |
Posted: Wed Feb 08, 2012 8:40 am Post subject: |
|
|
 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 |
|
 |
mqjeff |
Posted: Wed Feb 08, 2012 8:45 am Post subject: |
|
|
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 |
|
 |
mqjeff |
Posted: Wed Feb 08, 2012 8:46 am Post subject: |
|
|
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 |
|
 |
Esa |
Posted: Wed Feb 08, 2012 8:48 am Post subject: |
|
|
 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 |
|
 |
lancelotlinc |
Posted: Wed Feb 08, 2012 8:51 am Post subject: |
|
|
 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 |
|
 |
|
|
 |
Goto page 1, 2, 3 Next |
Page 1 of 3 |
|
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
|
|
|
|