-
CLOSE_WAIT & TIME_WAIT 최종 분석
트래픽이 많은 웹 서비스를 운영하다보면 CPU는 여유가 있지만 웹서버가 응답을 제대로 처리하지 못하고 먹통이 되는 경우를 종종 보게 됩니다. 여러가지 이유가 있겠지만, 이 글에서는 가장 대표적인 경우인 CLOSE_WAIT 상태를 재현하고 원인과 문제점 그리고 해결책을 알아봅니다. 나아가 TIME_WAIT의 동작 과정을 직접 만든 예제와 리눅스 커널 소스를 통해 확인하고, 인터넷에 퍼진 낡은 그래서 더이상 유효하지 않은 정보들을 바로 잡습니다. Part I. CLOSE_WAIT CLOSE_WAIT로 인한 서버 행업 현상 서버 부하 테스트 과정 중 일정 시간이 경과하면 점점 더...
-
L4 장비의 동작과 서비스 배포시 유의점
개요 현재 카카오에서 대부분의 웹서버는 L3DSR (Direct Server Return)구성의 L7 HealthCheck 방식을 사용 중입니다. L7 HealthCheck 방식은 앞서 블로그에서 기술한적이 있는 것처럼 OSI 7Layer 중 Layer7 계층의 어플리케이션 응답을 체크하는 방식입니다. 카카오에서는 L4장비가 주기적으로 서버와 TCP 세션을 맺고 GET /health_check.html 의 Request로 응답코드를 확인 하는 방식입니다. 그러나 최근 여러개의 서비스에서 HTTP Keep-Alive 를 사용중이고 이에 따라 배포시 의도하지 않은 문제점이 발생할 수 있어 이에 대한 회피에 대해 기술하도록 하겠습니다.