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
'Knowledge > CS' 카테고리의 다른 글
[CS] 객체지향 프로그래밍이란? (0) | 2022.12.03 |
---|---|
[CS] 뮤텍스(Mutex) 세마포어(Semaphore) 란? (0) | 2022.12.02 |
[CS] 프로세스와 스레드 개념, 차이 (0) | 2022.11.30 |
[CS] 대칭키 암호화, 비대칭키 암호화 (0) | 2022.11.29 |
[CS] OSI 7 계층 , TCP/IP 4 계층이란? (1) | 2022.11.27 |
댓글