The purpose of this document is help in cases where the JAVA Dispatcher/ ICM (Internet Communication Manager) leads to erroneous situations and more detailed investigation is needed.
- The SAP Application Server JAVA dispatcher distributes the client requests to the free server processes using a “round robin” algorithm. If there is already a connection to the client, the request is forwarded to the server process that is already processing requests for this client.
- The Internet Communication Manager ensures that communication between the SAP System (SAP Web Application Server) and the outside world via HTTP, HTTPS and SMTP protocols works properly. In its role as a server the ICM can process requests from the Internet that arrive as URLs with the server/port combination that the ICM can listen to. The ICM then calls the relevant local handler for the URL in question.
Lets say that you suspect there is uneven load balancing between the server nodes. In this case, detailed JAVA dispatcher traces will help. Another example will be that requests are triggered from a 3rd party load balancer to the ICM and this fails. Analyzing the ICM traces will shed more light. This analysis will also help in standard performance tuning and optimization of ICM if needed.
DISPATCHER (SAP Release 6.40 and 7.00/7.01/7.02)
To trace the Dispatcher, enable the property HttpTrace (set it to enable) and HttpTraceTime to true as per as per SAP note 724719.. Also open Visual Admin -> goto Dispatcher node -> services -> LogConfigurator -> Locations tab -> com.sap.engine.services.httpserver and set the severity (of the subtree as well) to DEBUG. Once the issue is reproduced, more detailed trace will be available in req_resp.trc files under Dispatcher folder of each instance. The latest modified DefaultTrace files under dispatcher and server log folders will also have more info.
ICM (SAP Release 7.1/7.2/7.3/7.31/7.4/7.5
To enable the ICM trace, see SAP Note:1095475. Also enable the HTTP Provider service (location com.sap.engine.services.httpserver.server.RequestImpl) as mentioned in the note for more detailed tracing on the server nodes as well.Check the latest logs in the below folder to investigate further: