흰 스타렉스에서 내가 내리지

HTTP Keep-Alive 본문

Network

HTTP Keep-Alive

주씨. 2024. 7. 8. 09:40
728x90

HTTP Keep-Alive 는 웹 서버와 클라이언트 간의 연결을 유지하여 여러 HTTP 요청을 동일한 TCP 연결에서 처리할 수 있도록 하는 기능이다. 

이를 통해 각 요청마다 새 연결을 설정하고 해제하는 과정을 생략할 수 있어 효율성을 높인다. 

 

# 작동 원리

기본적으로 HTTP/1.0 에서는 각 HTTP 요청마다 새로운 TCP 연결이 필요했다. 

이는 다음과 같은 절차를 포함한다. 

 

  1. TCP 연결 설정 (3-way handshake)
  2. HTTP 요청 전송
  3. HTTP 응답 수신
  4. TCP 연결 종료 (4-way handshake)
HTTP/1.0 은 커넥션 하나당 요청 하나와 응답 하나만 처리 가능하여, 매우 비효율적이며 서버 부하도 존재했다. 
HTTP/1.1 은 Keep-Alive 을 가능하게 하여 지정한 timeout 동안에 커넥션을 재사용 가능하게 하여, 기존 연결에 대해 Handshaking 을 생략할 수 있게 해준다. 이외 다른 장단점이 있다. 

 

HTTP Keep-Alive 를 사용하면 한 번의 TCP 연결로 여러 HTTP 요청을 처리할 수 있다. 

즉, 초기 요청 이후에도 연결을 유지하고 추가 요청을 같은 연결을 통해 처리한다. 

HTTP 헤더에서 `Connection : keep-alive` 를 설정하여 이를 구현한다.

 

 

# 장점

  1. 성능 향상 : TCP 연결 설정과 해제에 드는 시간을 줄여 웹 페이지 로딩 속도를 개선한다. 
  2. 자원 절약 : 반복적인 연결 설정/해제 과정을 들여 서버와 클라이언트의 자원 사용을 최적화한다.
  3. 대역폭 절약 : 연결 설정/해제 과정에서 발생하는 오버헤드를 줄여 네트워크 대역폭을 절약한다.

 

# 사용해야 하는 상황

  1. 다수의 작은 요청이 연속적으로 발생할 때 : 웹 페이지는 여러 개의 이미지, CSS 파일, JavaScript 파일 등을 로드할 때 여러 HTTP 요청을 연속적으로 발생시킨다. 
  2. 성능 최적화가 중요한 웹 애플리케이션 : 사용자 경험을 극대화하기 위해 웹 페이지 로딩 시간을 줄이는 것이 중요한 경우
  3. 제한된 자원 환경 : 서버의 CPU 와 메모리 자원을 절약해야 하는 환경

 

# 주의할 점

연결을 장시간 유지하면 서버의 연결 자원이 고갈될 수 있으므로, 적절한 타임아웃과 최대 요청 수를 설정하여 자원을 효율적으로 관리해야 한다. 

'Network' 카테고리의 다른 글

IP 클래스와 서브넷 - 서브넷의 탄생 배경을 중심으로  (2) 2024.10.09
HTTP 메시지  (0) 2024.07.08
VPC , Subnet  (0) 2024.06.10
NAT Gateway & Bastion Host  (0) 2023.08.28
보안그룹과 NACL  (0) 2023.08.28