게시물 6건
   
[WEB] 아파치 Keep-Alive 을 이용한 웹 서버 부하 줄이기
글쓴이 : 최장섭 날짜 : 2013-07-16 (화) 11:13 조회 : 2325
▶ 리버스 프록시는 웹 서버의 바로 앞에 위치해서 웹 서버의 버퍼로서의 역할을 수행한다는 점도
    중요하다.

▶ 특히 HTTP의 Keep-Alive 의 기느을 이용하고자 할 경우에 이 점에서 리버스 프록시의 존재가 중
    요해지게 되었다.

▶ HTTP 에는 Keep-Alive 라는 기능이 있다. 어떠한 특정 클라이언트가 한 번에 다수의 컨텐츠를
    동일한 웹 서버에서 요청할 경우 다수의 HTTP 요청마다 서버와 접속 하고 끊고를 반복하게 된다면
    이는 비효율적인 방법이다.

▶ 최초 요청시에 연결된 서버와의 접속을 해당 요청이 종료된 후에도
    접속을 끊지 않고 유치한 채로 이어지는 요청에 해당 접속을 계속 사용함으로써, 하나의 접속으로
    다수의 요청을 처리 하는 기능이다.

▶ 서버측이 Keep-Alive OK 라는 지시를 HTTP 헤더로 브라우저에 알리면, 브라우저는 서버와의
    접속을 계속 유지해서 Keep-Alive 사양을 따라 하나의 접속으로 여러 파일들을 다운로드 한다.

▶ 실제, Keep-Alive 가 OFF인 서버보다 Keep-Alive 가 유효한 서버로부터 파일을 다운로드 하는 것
    이 실제 체감속도 면에서도 빠르게 느껴진다.

▶ 한번 연결된 접속을 당분간 유지하는 특성상, 웹 서버에 다소 부하를 일으킨다. 구체적으로는 특정
    클라이언트로부터 요청을 받은 프로세스/스레드 는 그 시점으로 부터 일정 시간 동안 해당
    클라이언트로의 응답을 위해서 점유되는 것을 들 수 있다.

메모리 관리 관점에서 보면 하나의 프로세스당 메모리 소비량이 많은 웹 서버에서는 하나의
    서버 내에 실행 될 수 있는 프로세스 수는 한정적이다. 이 떄 독단적으로 Keep-Alive 를 ON
    시켰을 경우에 프로세스 중 다수가  Keep-Alive 의 접속 유지를 위해 소비된다.



▶ 여기서 만약 Keep-Alive 가 OFF 된다면 클라이언트 에서는 속도가 상당히 떨어질 것이다.
    여기서 리버스 프록시를 추가한다면 리버스 프록시 서버에서는 실제 프로세스당 메모리 소비량이
    그다지 많지 않기 떄문에 하나의 호스트내에서도 한정적인 프로세스를 여유롭게 활용할 수가 있
    다.

▶ 일부 프로세스가 Keep-Alive 연결을 유지하기 위해 소비된다고 해도 실제 서버에는 큰 영향을
    끼치지 않는다. 그리고 클라이언트와 리버스 프록시 서버 사이에만 Keep-Alive 으로 하고 리버스
    프록시와 웹 서버 사이에는 Keep-Alive 를 OFF 로 한다.

▶ 그러면 웹 서버는 프로세스 수가 적더라도 하나의 요청이 종료되면 곧 바로 그 후에 다른 요청에
    응답할 수가 있게된다. 전체적으로 동시에 다룰 수 있는 클라이언트의 수는 많아지고, 전송량 또한
    향상된다. 클라이언트와 접속 유지를 리버스 프록시 서버가 처리하게 되므로 메모리 소비량이
    많은 웹 서버에서는 큰 영향을 주지 않게된다.


이름 패스워드
비밀글 (체크하면 글쓴이만 내용을 확인할 수 있습니다.)
왼쪽의 글자를 입력하세요.
   

miwit.com sir.co.kr DNS Powered by DNSEver.com DNS Powered by DNSEver.com