The purpose of this page is to enable you to configure/tune your Process Integration (PI) and/or Process Orchestration (PO) system to handle moderate to high volume synchronous scenarios.
This document will explain the most common solutions to some of the known errors, which occur during synchronous message processing involving several different PI Adapter types. It will show you how to check your existing parameter values and how and where to increase these, if necessary.
Many issues during synchronous communication are caused by a lack of sufficient resources in PI to handle the volume. By tweaking some of these tuning parameters this will help to proactively prevent these issues from occurring. Of course, there are also other issues which can affect synchronous message processing e.g. network issues, receiver system tuning etc.
Ensure a sufficient number of HTTP Worker threads (FCAServerThreadCount parameter) are available
The default value is 15, try to find a value that meets your own specific needs without setting the parameter too high. You could start-off with a value of 50 and increase in small increments if this still does not have the desired effect.
To check your current settings:
Go to http://<server>:<port>/nwa/sys-config
-> filter for HTTP
-> select the HTTP Provider
-> filter for FCAServerThreadCount
To verify if the HTTP Worker Threads are being exhausted during synchronous message processing:
- Capture 4 Java Thread Dumps at a time interval of 30 seconds by using the XPI Inspector tool with Example 51 (Performance Problem)
- You can use the Java Thread Dump Viewer tool, available in SAP Note 1020246 Thread Dump Viewer for SAP Java Engine, to read the Thread Dumps. See also Thread Dump Viewer for SAP NetWeaver AS Java
To increase the value:
If you need to increase the value, see the SAP KBA 1945745 How to increase HTTP Worker (FCA) threads in PI, for the details on how to do this.
Ensure a sufficient number of queues/threads available to the relevant PI Adapter type
The number of queues/threads available for Inbound/Outbound synchronous calls can be tuned to meet specific requirements. In most cases the default value of 5 is too low. This could be increased to 10 or possibly 15 (even higher if required).
To check your current settings:
Go to http://<server>:<port>/pimon
-> Adapter Engine
-> Adapter Engine Status
-> Additional Data (tab)
-> filter for relevant adapter type e.g. SOAP
For more details see the SAP KBA 1662269 How to Monitor the PI Adapter Framework queues.
- The *Call and *Rqst queues are for synchronous messages Sender/Receiver queues.
- ICO scenarios only use the Sender queues – see SAP Note 1557036 Integrated Configuration Objects (ICO) scenarios use Messaging System Sender Queues only.
To increase the number of queues/threads:
How to do this is described in the blog below:
Messaging System queue properties after XI 3.0 SP19 / XI 7.0SP11
In short, you need to do the following:
Go to the Config Tool
-> Navigate Service com.sap.aii.af.svc
-> (property) messaging.connectionDefinition
(name=SOAP_http://sap.com/xi/XI/System, messageListener=localejbs/AFWListener, exceptionListener=localejbs/AFWListener, pollInterval=60000, pollAttempts=60, Send.maxConsumers=5, Recv.maxConsumers=5, Call.maxConsumers=10, Rqst.maxConsumers=10)
…Onto the existing parameter value
(name=global, messageListener=localejbs/AFWListener, exceptionListener=localejbs/AFWListener, pollInterval=60000, pollAttempts=60, Send.maxConsumers=5, Recv.maxConsumers=5, Call.maxConsumers=5, Rqst.maxConsumers=5) – note: never change these parameters
Afterwards, the parameter value should look like this: (name=global, messageListener=localejbs/AFWListener, exceptionListener=localejbs/AFWListener, pollInterval=60000, pollAttempts=60, Send.maxConsumers=5, Recv.maxConsumers=5, Call.maxConsumers=5, Rqst.maxConsumers=5)(name=SOAP_http://sap.com/xi/XI/System, messageListener=localejbs/AFWListener, exceptionListener=localejbs/AFWListener, pollInterval=60000, pollAttempts=60, Send.maxConsumers=5, Recv.maxConsumers=5, Call.maxConsumers=10, Rqst.maxConsumers=10)
Or if you have tuned multiple Adapter types, below is a possible example of how this would look:
(name=global, messageListener=localejbs/AFWListener, exceptionListener=localejbs/AFWListener, pollInterval=60000, pollAttempts=60, Send.maxConsumers=10, Recv.maxConsumers=10, Call.maxConsumers=10, Rqst.maxConsumers=10)(name=SOAP_http://sap.com/xi/XI/System, Send.maxConsumers=10, Recv.maxConsumers=10, Call.maxConsumers=15, Rqst.maxConsumers=15)(name=File_http://sap.com/xi/XI/System, Send.maxConsumers=15, Recv.maxConsumers=10, Call.maxConsumers=10, Rqst.maxConsumers=10)(name=JDBC_http://sap.com/xi/XI/System, Send.maxConsumers=10, Recv.maxConsumers=10, Call.maxConsumers=10, Rqst.maxConsumers=10)
Note: it is very important to test these parameter changes in a Dev/QA environment prior to introducing to Production.
SAP Note 1493502 Max Receiver Parameter for Integrated Configurations
SAP Note 1916598 *NF* Receiver Parallelism per Interface an enhancement was introduced
SAP SCN - Tuning the PI Messaging System Queues
SOAP Adapter timeout settings
For SOAP Adapter scenarios, tuning the Timeout values may help. However, pay careful attention to the information provided in the SAP Note 1593920 Synchronous SOAP sender calls: fine tune PI under high load, regarding this.
As per note 1593920:
“Increasing the value would lead to less expired messages, but the time for processing a single message will increase and if there are too many incoming requests, a lot of messages would occupy SOAP threads to wait to be processed and the system may exhaust its application threads pool. In this case, make sure that the system has enough HTTP Worker threads and application threads, otherwise the system may completely hang. Application threads count is in all cases manipulated by MaxThreadCount property of Application Thread Manager on the server.
Manipulate the values of the SOAP Adapter timeout property, depending on the module used:Decreasing the values would lead to more expired messages but there is theoretically less probability of performance issues.
- XI.Timeout if XISOAPAdapterBean is used or
- syncTimeout if CallSapAdapter is used
To increase/decrease these parameters:
See the SAP KBA 1621719 Timeout parameters in SOAP Sender/Receiver Adapter
SAP Note 937159 XI Adapter Engine is stuck
RFC Adapter timeout settings
See the SAP Note 730870 FAQ XI 3.0/ PI 7.0/ PI 7.1/ PI 7.11/ PI 7.2/ 7.3 RFC Adapter - specifically question 14
Ensure there are sufficient system resources/hardware
Increasing the number of Java Server Nodes and/or adding a new Instance can help. See SAP KBA 1827219 Minimum number of J2EE Server Nodes for Productive SAP Process Integration (PI)
SAP Note 894509 PI Performance Check