737625 - Parameter recommendations for the ICM
This Post provides information about using the Internet Communication Manager (ICM) and answers questions relating to parameter setting.
This Post provides information about using the Internet Communication Manager (ICM) and answers questions relating to parameter setting.
Other Terms
HTTP, HTTPS, HTTP load balancing, ICM, temporarily out of free buffers
Reason and Prerequisites
Solution
ICM Configuration
The following parameters (with their default values for Version 6.40) restrict the maximum load on the ICM:
icm/max_conn = 500
icm/max_sockets = 2048
icm/req_queue_len = 500
icm/min_threads = 10
icm/max_threads = 50
mpi/total_size_MB = 80
mpi/max_pipes = 4000
Note that each active HTTP connection requires two memory pipes (that is, four event flags) as well as one socket. This has nothing to do with the possible number of simultaneous users because each user can open several HTTP connections simultaneously depending on the application. You may have to change operating system parameters to allow for these types of high-load scenarios. For more information, see SAP Note 715400.
Relationship between users and active HTTP connections
To evaluate how many users can use the ICM, you must consider the following scenarios:
Therefore, there is no global formula since the actual number of parallel HTTP connections concurrent_conn depends on the parameters. The following offers a rule of thumb:
concurrent_conn = (users * req_per_dialog_step * conn_keepalive_sec)/ (thinktime_per_diastep_sec)
The value selected for the parmaters icm/max_conn and icm/max_sockets should be greater than the value calculated for concurrent_conn, and mpi/max_pipes should be at least twice as large as the value for concurrent_conn.
You can use the mpi/total_size_MB formula to determine the total MPI size
mpi/total_size_mb = (concurrent_conn * mpi_buffer_size) / (1024 * 1024)
The parameter mpi/buffer_size determines the size of the blocks that are used for data transfer within the memory pipes. Only change this parameter if requested to do so by SAP.
Examples
Reasonable maximum parameter values (620: as of kernel patch level 1081, in Release 6.40 and higher: all versions)
icm/max_conn = 10000
icm/max_sockets = 16384
icm/req_queue_len = 6000
icm/min_threads = 100
icm/max_threads = 250
mpi/total_size_MB = 500
mpi/max_pipes = 20500
For platforms other than Windows, the following reasonable, maximum parameter values apply as of 7.20 (as of May, 2010)
icm/max_conn = 20000
icm/max_sockets = 22500
icm/req_queue_len = 6000
icm/min_threads = 100
icm/max_threads = 500
mpi/total_size_MB = 500
mpi/max_pipes = 45000
The value of mpi/buffer_size should not drop below 32,768 because the HTTP header must fit completely into a block of this size.
Operating system dependencies
The following parameters (with their default values for Version 6.40) restrict the maximum load on the ICM:
icm/max_conn = 500
icm/max_sockets = 2048
icm/req_queue_len = 500
icm/min_threads = 10
icm/max_threads = 50
mpi/total_size_MB = 80
mpi/max_pipes = 4000
Note that each active HTTP connection requires two memory pipes (that is, four event flags) as well as one socket. This has nothing to do with the possible number of simultaneous users because each user can open several HTTP connections simultaneously depending on the application. You may have to change operating system parameters to allow for these types of high-load scenarios. For more information, see SAP Note 715400.
Relationship between users and active HTTP connections
To evaluate how many users can use the ICM, you must consider the following scenarios:
- If a user submits a request, this can open several HTTP connections. Depending on the application, a request can open up to 10 or 20 HTTP connections. The user does not see exactly how many connections are opened. The average number of HTTP connections for each request is designated in the following formula with req_per_dialog_step.
- The "think time" is also a determining factor for the utilization of the ICM. This is the period of time (in seconds) between two dialog steps ("clicks") of the user. There is no active HTTP connection during this time (this still depends on the timeout, see below). The think time in the following formula is indicated by thinktime_per_diastep_sec.
- The Keepalive timeout is also important in this context (parameter icm/server_port_< xx >) or icm/keep_alive_timeout) because it determines how long the ICM keeps the connection open for further queries of this request. This timeout in seconds is indicated in the formula with conn_keepalive_sec.
Therefore, there is no global formula since the actual number of parallel HTTP connections concurrent_conn depends on the parameters. The following offers a rule of thumb:
concurrent_conn = (users * req_per_dialog_step * conn_keepalive_sec)/ (thinktime_per_diastep_sec)
The value selected for the parmaters icm/max_conn and icm/max_sockets should be greater than the value calculated for concurrent_conn, and mpi/max_pipes should be at least twice as large as the value for concurrent_conn.
You can use the mpi/total_size_MB formula to determine the total MPI size
mpi/total_size_mb = (concurrent_conn * mpi_buffer_size) / (1024 * 1024)
The parameter mpi/buffer_size determines the size of the blocks that are used for data transfer within the memory pipes. Only change this parameter if requested to do so by SAP.
Examples
- If you have 50 users, 3 requests per click, a keep_alive_value of 30 seconds (if the ICM notices that the resources are scarce, it automatically reduces the timeout for new connections) and an average think time of 20 seconds, the maximum values are as follows:
- With 500 users, 3 requests per click, a keep_alive_timeout of 60 seconds and a think time of 20 seconds, the following maximum values result:
- If you have 1,000 users, 3 requests per click, a keep_alive_timeout of 30 seconds and a think time of 20 seconds, the maximum values are as follows:
- With 12,000 users, 3 requests per click, a keep_alive_timeout of 5 seconds and a think time of 30 seconds, the following maximum values result:
Reasonable maximum parameter values (620: as of kernel patch level 1081, in Release 6.40 and higher: all versions)
icm/max_conn = 10000
icm/max_sockets = 16384
icm/req_queue_len = 6000
icm/min_threads = 100
icm/max_threads = 250
mpi/total_size_MB = 500
mpi/max_pipes = 20500
For platforms other than Windows, the following reasonable, maximum parameter values apply as of 7.20 (as of May, 2010)
icm/max_conn = 20000
icm/max_sockets = 22500
icm/req_queue_len = 6000
icm/min_threads = 100
icm/max_threads = 500
mpi/total_size_MB = 500
mpi/max_pipes = 45000
The value of mpi/buffer_size should not drop below 32,768 because the HTTP header must fit completely into a block of this size.
Operating system dependencies
Note that the operating systems often have restrictions for the maximum number of open file handles (sockets) for each process. Check that each process can have at least as many sockets (file handles) as specified in the paramater icm/max_sockets (2048 is the default value).
When you start it, the ICM checks if sufficient sockets are available to it from the operating system.
If not, the trace file displays the following entry:
[Thr 1] *** WARNING => maximum number of sockets supported on this host
(1019) less than parameter icm/max_sockets (8192) [icxxrout_mt. 227 ]
You should then check the settings in the operating system:
- AIX
- SUN Solaris
- HP_UX
Further information is available at: http://docs.hp. com/hpux/onlinedocs/939/KCParms/KCparamTut.OpenLockedFiles.html
- Tru64 UNIX
The process of changing parameters in the system is described in Note 356370.
- Windows platforms
My_Computer\HKEY_LOCAL_MACHINE\SYSTEMN\CurrentControlSet\Services\Tcpip\Parameters:
MaxUserPort should be at least 0xfde8 = 65000
TcpTimedWaitDelay should be 0x1e = 30 (or less)
See also: http://www.microsoft.com/resources/documentation/Windows/2000/server/reskit/en-us/Default.asp?url=/resources/documentation/Windows/2000/server/reskit/en-us/regentry/58791.asp
- Linux
The corresponding parameter is called nofile and must be adjusted in the configuration file /etc/security/limits.conf.
- AS/400
No comments:
Post a Comment