본문 바로가기

HTTP HTTPS

KeepAlive 정리

반응형

HTTP 구조

 - HTTP는 Connectionless 방식으로 연결을 매번 끊고 새로 생성하는 구조

 - 이는 Network 비용 측면에서 최초 연결을 하기 위해 많은 비용을 소비하는 구조

 

KeepAlive 란?

1. 

특정 한 프로세스가 특정 사용자의 지속적인 요청 작업들을 계속해서 처리하도록 함.
즉, 첫 요청 시에 열어 놓은 Port를 끊지 않고, 지정된 KeepAlive Timeout동안 idle하면 끊는다.
KeepAliveTimeout값이 채워지기 전에 다시 요청이 온다면 다시 KeepAliveTimeout은 다시 0부터 Count를 수행한다.
최종적으로, KeepAliveTimeout 지정한 시간만큼 idle하면 그때, 해당 Port연결을 끊는다.

 

2.

HTTP 프로토콜상 한번 접속 후 자료를 모두 전송하면 접속을 끊어 버리지만 KeepAlive On상태에서는 KeepAlive Timeout 동안 접속을 끊지 않고 다음 접속을 기다린다.

HTML, 이미지 파일 등 정적 파일들로 구성된 서버에 KeepAlive On으로 설정될 경우 성능 향상을 보인다고 한다.

단, 이와 같은 성능 향상을 보이기 위해서는 서버가 사용률이 높지 않아야 한다.

사용률이 높은 서버의 경우 KeepAlive On을 설정해 높을 경우 모든 접속자 마다 연결 유지를 해야 되기 때문에 웹 서버의 프로세스 수가 늘어나 MaxClient 값을 초과하게 된다. 

또한, KeepAlive On 상태일 때 접속 유지하는 프로세스들 때문에 메모리가 사용하게 된다.

 

KeepAlive 설정은 웹 서버 httpd.conf 파일에서 수정할 수 있고 아래와 같이 설정이 가능하다.

KeepAlive [On/Off]
MaxKeepAliveRequest [회수]
KeepAliveTimeout [초]


// 사용 예
KeepAlive On
MaxKeepAliveRequest 100
KeepAliveTimeout 60

 

Keep Alive Timeout 설정을 하는 이유

서버 자원은 무한정이 아니다. 그렇기 때문에  이러한 접속을 계속 유지하는 것은 서버 자원 손실을 발생시킨다.

즉, 서버와 연결을 맺을 수 있는 Socket은 한정되어 있고 연결이 오래 지속되면 다른 사람들이 연결을 못하게 되는 상황이 생긴다.

 

 

[참고]

- https://goodgid.github.io/HTTP-Keep-Alive/

- http://mcpaint.tistory.com/141

- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=cgidhtml&logNo=130079030932 

반응형

'HTTP HTTPS' 카테고리의 다른 글

[HTTP] wget/curl 명령어 정리  (1) 2024.03.12
[HTTP] Stateful/Stateless 차이점  (0) 2024.03.06
SSL 인증서 정리  (0) 2022.12.10
HTTP와 HTTPS 차이 및 SSL 동작 방법  (0) 2022.12.10
[HTTP] HTTP 응답 상태 코드 정리  (0) 2022.01.18