IT/SAP

1934023 - Application server startup fail with an ICM connection error

SAP_BASIS 2014. 9. 16. 17:23

Symptom

The SAP application server is no able to startup with no more work processes.

Dispatcher trace file (dev_disp):

*** DP_FATAL_ERROR => DpWPCheck: no more work processes
*** DISPATCHER EMERGENCY SHUTDOWN ***

The work process trace file (dev_w*):

M *** ERROR => ThPlgConnectToIcm: IcmReadAck failed (-8, ni_rc=-6) 
M in_ThErrHandle: 1
M *** ERROR => ThStart: connect to icman (step 1, th_errno 2, action 3, level 1) 

[...]

M call ThrShutDown (1)...
M ***LOG Q02=> wp_halt, WPStop (Workp. 0 XXX ) 


 

Environment

  • Two SAP systems running in the same server;
  • This issue was initially identified in Windows systems;
  • Usually this occurs with a specific startup order, for example, starting the system A with the system B already UP and running. If the systems are started the other way round, there is no issue.


 

Cause

The ICM bind a TCP port to administration purpose that is already in use by the second SAP system.

At the time that the task handler (work process) went to connect to the ICM, in order to finish its startup process, it fail with a network acknowledge error. Checking the work process trace with level 3, it is possible to see the network error:

M ThPlgConnectToIcm: connect to icman (localhost, 65000)
M NiHLGetNodeAddr: got hostname 'localhost' from operating system
M NiIGetNodeAddr: hostname 'localhost' = addr 127.0.0.1
M NiIGetServNo: servicename '65000' = port 65000
M NiICreateHandle: hdl 1 state NI_INITIAL_CON
M NiIInitSocket: set default settings for new hdl 1/sock 2060 (I4; ST)
M NiIBlockMode: set blockmode for hdl 1 FALSE
M NiITraceByteOrder: CPU byte order: little endian, reverse network, low val .. high val
M NiICheckPendConnection: connection of hdl 1 to 127.0.0.1:65000 established
M NiIConnect: hdl 1 took local address 127.0.0.1:53412
M NiIConnect: state of hdl 1 NI_CONNECTED
M NiIWrite: hdl 1 sent data (wrt=137,pac=1,MESG_IO)
M NiIRead: SiRecv failed for hdl 1/sock 2060
M (SI_ECONN_BROKEN/0; I4; ST; P=127.0.0.1:65000; L=127.0.0.1:53412)
M IcmReadAck: receive acknowledge failed (-8/-6)M *** ERROR => ThPlgConnectToIcm: IcmReadAck failed (-8, ni_rc=-6)
NiICloseHandle: shutdown and close hdl 1/sock 2060
M in_ThErrHandle: 1
M *** ERROR => ThStart: connect to icman (step 1, th_errno 2, action 3, level 1)

Usually this error occurs with port 65000 and in the loopback interface (127.0.0.1).


 

Resolution

It is needed to configure the ICM of each system to use a specific TCP port to avoid the conflict.

You can use the profile parameter icm/admin_port to specify an unique port for each system.


 

See Also

SAP Note #1900647: Parameter icm/admin_port     


 

Keywords

SMICM, startsap, host IPv6, IPv4, icman, Internet Communication Manager, bind, listen