Occurs when Session in Client remains in Establish state when Load Balancing session aging time of SLB L4 switch is greater than tcp_keepidle
L4 switch 가 LB session table clear 하기 전에 OS 에서 먼저 session 을 정리
- tcp_keepalive_time 파라미터 변경, tcp_keepalive_time < LB Session aging time
- socket option 에 keepalive 적용
tcp_keepalive 관련 파라미터
- tcp_keepalive_time : 두 서버간 설정 시간동안 패킷 교환이 없을 경우 keepalive probe 전송
- tcp_keepalive_intvl, tcp_keepalive_probes : keepalive probe 에 대한 응답이 없을 경우 tcp_keepalive_intvl 주기로 tcp_keepalive_probes 횟수만큼 probe 를 재전송하며 마지막 probe 까지 응답이 없을 경우 FIN 패킷 전송후 세션 정리.
OS 별 파라미터
OS | |||||
---|---|---|---|---|---|
Linux | tcp_keepalive_time | tcp_keepalive_intvl | tcp_keepalive_probes | tcp_fin_timeout | sysctl -a | grep keepalive |
Aix | tcp_keepidle | tcp_keepintvl | tcp_keepcnt | tcp_timewait | no -o [parameter] |
HP-UX | tcp_keepalive_interval | tcp_keepalives_kill | tcp_time_wait_interval | ndd [-get,-set] [parameter] | |
Solaris | tcp_keepalive_interval | tcp_time_wait_interval | ndd [-get,-set] [parameter] | ||
Windows | KEEPALIVETIME | KEEPALIVEINTERVAL | TCPMAXDATARETRANMISSION | TCPTIMEDWAITDELAY | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters |
keep alive socket 설정
- C : setsockopt(sockfd, SO_KEEPALIVE, ...);
- JAVA : Socket.setKeepAlive(true);