← 질문 목록
#375깊이 0

HTTP의 Keep-Alive 설정이 TCP의 TIME_WAIT 상태 발생을 어떻게 완화하는가?

네트워크

Keep-Alive는 단일 TCP 연결로 여러 HTTP 요청을 처리해 연결을 끊는 횟수 자체를 줄이기 때문이다.

구분Keep-Alive 미사용Keep-Alive 사용
연결 방식요청마다 새 TCP 연결 생성단일 TCP 연결 재사용
종료 시점매 응답 후 즉시 능동 종료타임아웃이나 종료 요청 시 능동 종료
TIME_WAIT요청 수만큼 고빈도 발생연결 수만큼만 드물게 발생

TCP 연결을 먼저 닫는 주체에는 TIME_WAIT 상태가 남는다. Keep-Alive를 쓰지 않으면 모든 HTTP 요청마다 TCP 연결을 새로 맺고 끊는다. 요청이 몰릴 때 매번 연결을 끊으면 소켓 자원과 포트가 금세 부족해진다.

Keep-Alive를 켜면 설정된 시간 동안 기존 TCP 연결을 끊지 않고 유지한다. 여러 HTTP 요청과 응답이 하나의 연결 위에서 오간다. 연결을 종료하는 주기 자체가 길어져 전체 TIME_WAIT 소켓 수가 줄어든다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

HTTP의 Keep-Alive 설정이 TCP의 TIME_WAIT 상태 발생을 어떻게 완화하는가?
HTTP의 Keep-Alive 설정이 TCP의 TIME_WAIT 상태 발생을 어떻게 완화하는가? · CS 길라잡이