250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- shared lock
- 동적sql
- PS
- SQL프로그래밍
- 다대일
- 스프링 폼
- 지연로딩
- 힙
- JPQL
- dfs
- execute
- 연관관계
- 낙관적락
- 비관적락
- 연결리스트
- 일대다
- 즉시로딩
- 백트래킹
- 스토어드 프로시저
- exclusive lock
- fetch
- BOJ
- 데코레이터
- querydsl
- 다대다
- 유니크제약조건
- FetchType
- 이진탐색
- CHECK OPTION
- eager
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
HTTP Keep-Alive 본문
728x90
HTTP Keep-Alive 는 웹 서버와 클라이언트 간의 연결을 유지하여 여러 HTTP 요청을 동일한 TCP 연결에서 처리할 수 있도록 하는 기능이다.
이를 통해 각 요청마다 새 연결을 설정하고 해제하는 과정을 생략할 수 있어 효율성을 높인다.
# 작동 원리
기본적으로 HTTP/1.0 에서는 각 HTTP 요청마다 새로운 TCP 연결이 필요했다.
이는 다음과 같은 절차를 포함한다.
- TCP 연결 설정 (3-way handshake)
- HTTP 요청 전송
- HTTP 응답 수신
- TCP 연결 종료 (4-way handshake)
HTTP/1.0 은 커넥션 하나당 요청 하나와 응답 하나만 처리 가능하여, 매우 비효율적이며 서버 부하도 존재했다.
HTTP/1.1 은 Keep-Alive 을 가능하게 하여 지정한 timeout 동안에 커넥션을 재사용 가능하게 하여, 기존 연결에 대해 Handshaking 을 생략할 수 있게 해준다. 이외 다른 장단점이 있다.
HTTP Keep-Alive 를 사용하면 한 번의 TCP 연결로 여러 HTTP 요청을 처리할 수 있다.
즉, 초기 요청 이후에도 연결을 유지하고 추가 요청을 같은 연결을 통해 처리한다.
HTTP 헤더에서 `Connection : keep-alive` 를 설정하여 이를 구현한다.
# 장점
- 성능 향상 : TCP 연결 설정과 해제에 드는 시간을 줄여 웹 페이지 로딩 속도를 개선한다.
- 자원 절약 : 반복적인 연결 설정/해제 과정을 들여 서버와 클라이언트의 자원 사용을 최적화한다.
- 대역폭 절약 : 연결 설정/해제 과정에서 발생하는 오버헤드를 줄여 네트워크 대역폭을 절약한다.
# 사용해야 하는 상황
- 다수의 작은 요청이 연속적으로 발생할 때 : 웹 페이지는 여러 개의 이미지, CSS 파일, JavaScript 파일 등을 로드할 때 여러 HTTP 요청을 연속적으로 발생시킨다.
- 성능 최적화가 중요한 웹 애플리케이션 : 사용자 경험을 극대화하기 위해 웹 페이지 로딩 시간을 줄이는 것이 중요한 경우
- 제한된 자원 환경 : 서버의 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 |