SAP WAS ICM Threads Test

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.

The ICM process uses threads to parallel process the load. The following illustration shows a detailed overview of the ICM.

This graphic is explained in the accompanying text

Figure 1 : Detailed overview of the ICM

Besides the pool of worker threads, which process incoming requests, the following ICM components are also implemented as threads:

  • Thread Control: This thread accepts the incoming TCP/IP requests and creates (or wakes) a worker thread from the thread pool to process the request. From this point on, thread control initializes the connection info data.
  • Worker Threads: These threads handle connection requests and responses. A worker thread contains an I/O handler for the network input and output, diverse plugins for the various supported protocols (HTTP, SMTP,…), which are required to be able to decide when the sent packet is finished (depends on the protocol).
  • Watchdog: Usually, a worker thread waits for the response, regardless of whether the worker thread is a server or a client.If a timeout occurs, the watchdog takes on the task of waiting for the response. This makes the worker thread available for other requests. When the watchdog receives the response, it informs the thread control components, which then call a worker thread.
  • Signal Handler: This thread processes signals sent from the operating system or from another process (for example, the dispatcher).
  • Connection Info: This table contains information about the state of the connection, the memory pipes, and the plug-in data for every existing network connection.
  • Memory Pipes: Memory pipes are memory-based communication objects that handle data transfer between the ICM and the work processes. For each connection there are four pipes: for each request and response one data pipe and an OOB (Out Of Band) pipe. The OOB pipe is used for control data.
  • Internet Server Cache: The ICM contains another cache to enable repeated requests to be quickly responded to. This cache is not shown in the graphic

If any of these threads is unavailable or is slow, then HTTP/S requests received by the SAP WAS cannot be serviced quickly. Such processing delays can severely hamper the experience of Internet users with the SAP. This is why, it is imperative that SAP administrators proactively detect such slowdowns, accurately identify when the slowdown occurred, and pinpoint the precise thread responsible for it. This is where the SAP WAS ICM Threads test helps! This test auto-discovers the threads that are at work in the ICM and reports the current state of each thread, what type of work each thread is performing presently, and how quickly that thread is doing that work. By closely monitoring the threads, administrators can isolate idle threads and those that are taking too long to process requests.

Target of the test : A SAP Netweaver Application Server

Agent deploying the test : An internal/remote agent

Outputs of the test : One set of results for every ICM thread.

Configurable parameters for the test
Parameter Description

Test period

How often should the test be executed

Host

Specify the server for which the test is to be configured.

Port

The port number at which the specified server listens.

WSDL Port

This test uses the SAPControl web service to pull metrics on application and service status. To enable the test to communicate with the web service, you need to configure the test with the port number of the web service. Therefore, specify the port number of the SAPControl web service against WSDL Port. To determine the exact port number of the SAPControl web service, you can look up the etc/services file on the SAP WAS being monitored. If the port number is not declared in the etc/services file, you can specify the default port number of the web service against WSDL Port. If the web service is not SSL-enabled, then the default port number of the web service will be: 5<NR>13. Similarly, if the web service is SSL-enabled, then the default port number of the web service will be: 5<NR>14. <NR> in the port number refers to the system number of the SAP server being monitored. The system number is an indicator of the TCP/IP port at which the SAP server listens. For example, for a server that listens at port 3200, the system number will be ‘00’. Similarly, if the SAP server port is 3201, the system number will have to be specified as ‘01’. Accordingly, the default port number of an SSL-enabled SAPControl web service will be 50014 , if the system number is 00, or 50114, if the system number is 01.

OS Username and OS Password

To enable the test to access the SAPControl web service and determine component state, you need to configure the OS Username and OS Password parameters of the test with the credentials (i.e., name and password) of an OS user, who fulfills one of the following conditions:

  • The name of the OS user should be declared using the service\admin_users profile parameter; (OR)
  • The name of the user group to which the OS user belongs should be declared using the service\admin_groups profile parameter; (OR)
  • The OS user should have the permission to execute the sapstartsrv executable

Confirm Password

Confirm the OS Password by retyping it here.

SSL

Set this flag to Yes, if the SAPControl web service is SSL-enabled. Set this flag to No, if the SAPControl web service is not SSL-enabled.

Measurements made by the test
Measurement Description Measurement Unit Interpretation

Status

Indicates the current status of this thread.

 

The values that this measure can report, what they mean, and their corresponding numeric values are discussed in the table below:

Measure Value Description Numeric Value
Running The thread is processing a request 1
Idle The thread is waiting for a request 2
Not Available There are no requests 3

Note:

By default, the test reports the Measure Values in the table above to indicate thread status. In the graph of this measure however, the same is represented using the numeric equivalents only.

Current operation

 

Indicates the operation that this thread is currently performing.

 

 

 

The values that this measure can report, what they mean, and their corresponding numeric values are discussed in the table below:

Measure Value Description Numeric Value
NOP No action 0
Administration Action that is triggered from transaction SMICM or program icmon - for example, display list. For this reason, at least one thread always displays Administration, if you call SMICM. 1
Read request Reads the request (server) 2
Read response Reads the response (client) 3
Write request Writes the request (client) 4
Write response Writes the response (server) 5
Open connection Sets up connection to a server 6
Close connection Closes connection to a partner 7
Accept connection Accepts the connection from a client 8
Time-dependent action Executes time-dependent (periodically scheduled) events 9
Wait for data Waits for data from the network or from the application server (SAP Web dispatcher) 10
Wait for response (SERV) Waits for a response from the application server (SAP Web AS is a server with active connections) 11
Wait for response (CLNT) Waits for a request from the application server (SAP Web AS is a server with active connections) 12
Shutdown Ends ICM 13

Note:

By default, the test reports the Measure Values in the table above to indicate operational status. In the graph of this measure however, the same is represented using the numeric equivalents only.

Processing rate

Indicates the rate at which this thread is processing requests.

Requests/Sec

A consistent drop in the value of this measure could indicate a processing bottleneck.

Compare the value of this measure across threads to know which thread is the slowest.