유용한 자료 2012. 7. 20. 10:52
posted by 나무사이
:
공부/네트워크 2012. 7. 12. 09:29

도대체 KeepAlive란 무엇인가?

apache.org의 KeepAlive에 대해 아래와 같이 정의 되어 있다.

 The Keep-Alive extension to HTTP/1.0 and the persistent connection feature of HTTP/1.1 provide long-lived HTTP sessions which allow multiple requests to be sent over the same TCP connection. In some cases this has been shown to result in an almost 50% speedup in latency times for HTML documents with many images. To enable Keep-Alive connections, set KeepAlive On

 

HTTP프로토콜상 한번 접속 후 자료를 모두 전송하면 접속을 끊어 버리지만 KeepAlive On상태에서는 KeepAliveTimeOut시간 동안 접속을 끊지않고 다음 접속을 기다린다. 순수 html파일, 이미지파일 등으로만 구성된 서버(동적파일이 없는서버)에 KeepAlive On으로 설정할 경우 50%정도의 성능 향상을 보인다고 한다. 단 이와 같은 성능향상을 보일려면 서버가 바쁘지 않아야 한다. 아주 바쁜 서버 환경에서 KeepAlive On을 설정해 놓을 경우 모든 접속자 마다 연결 유지를 해 놓아야 하기 때문에 아파치 프로세스수가 기하 급수적으로 늘어나 MaxClient값을 초과하게 된다. 또한 On상태일때 접속유지 하는 프로세스들 때문에 메모리를 그 만큼 많이 사용하게 된다. 따라서 KeepAlive값은 단순히 On/Off 시킬것이 아니라 접속자, 메모리용량과 연관해서 값을 설정하여야한다.

 

공간사랑의 KeepAlive 설정

    접속자가 많지만 메모리가 충분하다 : On

    접속자가 많지만 메모리 여유가 없다 : Off

    접속자가 적고 메모리가 충분하다 : On

    접속자가 적고 메모리 여유가 없다 : Off

 

- 메모리가 충분하다는 의미는 접속자가 MaxClient값에 도달했을 경우라고 swap메모리를 사용하지 않는상태를 말한다.

[출처] KeepAlive Off [ Apache ]|작성자 공간사랑



하지만, 동적 파일이 많은 서버에서는 한 페이지당 여러 번의 connection이 맺어지기 때문에, 하나의 connection이 긴 livetime을 갖게 되면, 아파치 프로세스가 급격히 증가하게 된다 
결국 max-client 값을 초과하게 되어 서버 성능에 영향을 주기 때문에, 불특정 다수의 사용자가 접속하는 
포털 서비스에서는 일반적으로 KeepAlive 설정을 off로 설정하고 있다.

posted by 나무사이
: