TIME_WAIT 누적 문제·keepalive 설정·소켓 재사용으로 TCP 커널 최적화 결
TCP 관련 커널 옵션 이해를 바탕으로 해결한 문제 중 하나는 TIME_WAIT 소켓 누적이었습니다. 짧은 주기로 연결을 맺고 끊는 서비스에서 TIME_WAIT 상태 소켓이 쌓여 포트가 고갈되는 현상이 발생했고, net.ipv4.tcp_tw_reuse 옵션으로 연결 재사용을 허용해 해결했습니다.
keepalive 설정도 중요했습니다. 장시간 유휴 상태인 연결이 중간 방화벽에서 끊기는 문제가 있었는데, tcp_keepalive_time과 tcp_keepalive_intvl 값을 조정해 연결이 살아있음을 주기적으로 확인하도록 했습니다.
backlog 크기도 조정했습니다. 트래픽이 급증할 때 연결 요청이 큐를 초과하면 클라이언트가 연결 거부를 받는 상황이 생겨, net.core.somaxconn 값을 늘려 피크 타임 연결 수용량을 확보했습니다.