Performance is reduced when you run web services with small message sizes
Follow this guidance to resolve the problem of reduced performance when you run web services with small message sizes.
Procedure
- Scenario: You see poor response times and throughput rates when you run web services using HTTP, and send smaller messages sizes (typically less than 32 KB). Throughput rates can fluctuate with message size. IBM® Integration Bus running on the AIX® platform might be affected.
- Explanation: The default configuration of HTTP enables the Nagle algorithm, which seeks to improve the efficiency of Internet Protocol networks by reducing the number of packets sent. It works by buffering small packets together, creating a smaller number of large packets. By default, the tcpnodelay setting on the sockets of the HTTPRequest is true. You can disable the Nagle algorithm at either the operating system level (system wide) or through IBM Integration Bus (affecting only the IBM Integration Bus HTTP sockets).
- Solution: Use the following commands to disable
the Nagle algorithm:
- HTTPRequest, SOAPRequest, and SCARequest nodes
-
mqsichangeproperties integrationNodeName -e integrationServerName -o ComIbmSocketConnectionManager -n tcpNoDelay -v true|false mqsichangeproperties integrationNodeName -e integrationServerName -o ComIbmSocketConnectionManager -n tcpNoDelaySSL -v true|false - Embedded listener for HTTPReply, SOAPReply, and SCAReply nodes
-
mqsichangeproperties integrationNodeName -e integrationServerName -o HTTPConnector -n tcpNoDelay -v true mqsichangeproperties integrationNodeName -e integrationServerName -o HTTPSConnector -n tcpNoDelay -v true - HTTP Listener for HTTPReply, SOAPReply, and SCAReply nodes
-
mqsichangeproperties integrationNodeName -b httplistener -o HTTPConnector -n tcpNoDelay -v true|false mqsichangeproperties integrationNodeName -b httplistener -o HTTPSConnector -n tcpNoDelay -v true|false
To determine the value set, take the following steps:
- Report property values
- Use the following command:
mqsireportproperties integrationNodeName -e integrationServerName -o ComIbmSocketConnectionManager -r mqsireportproperties integrationNodeName -e integrationServerName -o HTTPConnector -r mqsireportproperties integrationNodeName -e integrationServerName -o HTTPSConnector -r mqsireportproperties integrationNodeName -b httplistener -o HTTPConnector -r mqsireportproperties integrationNodeName -b httplistener -o HTTPSConnector -r