본문 바로가기
Knowledge/CS

[CS] HTTP1.1 의 keep alive 란?

by YoonJong 2022. 12. 1.
728x90

HTTP 기본 구조는 1회성 요청(request) 와 응답(response) 로 이루어진다.

따라서, 매순간마다 HTTP request 및 response 로 인한 종료시 TCP 과정의 연결, 종료 과정이 필요하다.

keep alive 기능은 이런 불필요한 연결과 종료 과정을 줄이기 위해, keep alive timeout 기간에는 동일한 리소스에 한해서 HTTP request 에 대해 연결을 유지하는 기능이다.


 

HTTP/1.1 에서는 디폴트값으로 keep alive 기능을 지원하지만 이전 버전에는 직접 설정해주었어야 했다.

HTTP 요청을 보낼 때

 - Connection: Keep-alive 라고 보내면,

 

서버에서 정상적으로 처리가 되면 응답으로 

 - Connection: keep-alive

 - keep-alive : max = 1000, timeout = 5 라고 응답을 내린다 ( 최소 5초동안 최대 1000번의 요청을 할 경우 끊어지지않는다.)

 

keep alive 기능을 활용 하면 장점으로는 불필요한 3-way-handshake 를 줄일 수 있다.

서버의 자원은 무한하지 않기 때문에 비용을 줄일 수 있다.

 

단점으로는, 트래픽이 많은 바쁜 환경에서는 keep alive 기능을 사용하면 모든 요청마다 연결을 유지해야 하기 때문에,

프로세스의 수가 기하급수적으로 늘어나 MaxClient 값을 오버해버린다.

메모리를 많이 사용하기 때문에 성능저하의 원인이 된다.

 

 

 

 

 

728x90

댓글