Apache 최적화하기 : KeepAlive 설정

조회 수 15518 추천 수 0 2017.03.08 10:30:52

 

Apache 최적화 :

 

KEEPALIVE 를 켤 것인가 끌 것인가?

 

 

Apache는 인터넷 상에서 가장 널리 쓰이는 웹 서버 이다. Apache를 최고의 성능으로 이끌어 내는 것은 시스템 관리자에 있어서 중요한 기술이다. Apache 최적화는 지속적으로 균형을 맞추는 작업이다. 다른 하나를 절약하기 위해서는 하나의 자원을 희생시켜야 한다는 점이다.


KeepAlive 란?

 


HTTP는 세션 리스(Session less) 프로토콜이다. 하나의 접속(Connection)이 단일 파일의 전송을 위해 구성되고 한번의 전송이 완료되면 종료된다. 이것은 단순한 방식이지만 매우 효과적인 것은 아니다.

효율성을 증가 시키기 위해 KeepAlive 라는 것을 소개 하고자 한다. KeepAlive를 사용 하게 되면, 웹 브라우저와 웹 서버는 동일한 접속(Connection)을 재사용하여 다중(Multiple) 파일들을 전송 할 수 있다.  

 

KeepAlive의 장점

 

 

1.  웹 사이트 속도 향상 :  HTTP 전송과 관련된 대기 시간을 줄여서 더 나은 사용자 환경을 제공한다.
 

2. CPU 사용의 절약 : KeepAlive를 사용하는 서버 측의 CPU 사용을 감소시킨다. 이미지, 스타일 시트, 자바스크립트 같은 수 많은 다른 종류의 파일들로 구성된 전형적인 웹 페이지를 생각해보자. 만약 KeepAlive를 꺼둔다면 이러한 파일들에 대해 각각 분산된 접속(Connection)이 만들어져야만 할 것이다. 접속(Connections)을 생성하고 종료하는 것은 간접적인 소모(overhead[간접비]역자 주)이고 모든 단일 파일에 대해 수행되어지는 것은 CPU시간의 낭비 이다.

 

 

KeepAlive의 단점

 

 

1. 메모리 사용의 증가 :  KeepAlive를 사용 하는 것은 서버의 메모리 사용을 늘리게 된다. 아파치 프로세스들은 연결된 접속(Connections)에서 새로운 요청이 있을 때까지 접속(Connection)을 열고 기다려야만 한다. 프로세스들이 대기하는 동안 그들은 다른 사용자(Clients)들이 서비스를 위해 사용 해야 하는 RAM을 차지 하고 있다.  만약 당신이 KeepAlive를 끄게 된다면 소수의 아파치 프로세스들은 남아서 활동 할 수 있게 된다. 이것은 메모리 사용을 줄이는 동시에 Apache로 하여금 더 많은 사용자들에게 서비스를 제공 할 수 있게 된다.
 

언제 KeepAlive를 사용 해야 하는 가?

 

 

 

KeepAlive의 사용 여부를 결정하는 것은 몇 가지 다른 요인들에 의해 결정이 된다.

 

1. 서버 자원들 : 당신은 RAM과 CPU power 중 어느 것을 더 많이 가지고 있는 가? RAM은 웹서버를 제한 하는 요인 중 거의 가장 큰 비중을 차지하고 있다. 만약 당신이 적은 RAM을 가지고 있을 경우 KeepAlive는 꺼두는 것이 좋을 것이다.  왜나하면 아파치 프로세스는 지속적으로 유지되고 있는 접속(Connection)으로부터 새로운 응답을 기다리는 동안 RAM을  물고 있어야 하며 이것은 귀중한 메모리 자원의 낭비이다. 만약 CPU power가 제한적이면 당신은 CPU 호출(Load)를 감소 시키기 위해 KeepAlive를 켜두는 것이 필요하다.

 

2. 사이트 유형 : 만약 당신이 운영하는 페이지들이 많은 이미지들과 다른 파일들로 링크되어져 있다면 KeepAlive는 두드러 질 정도로 사용자 환경을 개선할 수 있을 것이다. 이것은 단일 접속(Connection)으로 다중(Multiple) 파일 의 전송을 가능케하기 때문이다.

 

3. 트래픽 경향 :  당신이 받는 트래픽의 유형. 만약 웹 트래픽이 하루에 걸쳐서 넓게 퍼져있다면 KeepAlive를 켜는 것을 권장한다. 다른 한편으로 , 짧은 시간에 사이트에 대해 동시 접속을 하려는 사용자들로부터 폭발적인 트래픽이 발생한다면 KeepAlive는 RAM 사용량을 급등하게 만드는 원인이 되기 때문에 끄는 것을 권장한다.


Apache KeepAlive 설정하기

 

 

 

Apache의 설정 파일을 열어서 이 설정 항목들을 찾아 봐라. CentOS에서 이 파일은 httpd.conf 라 되어 있으며 /etc/httpd.conf.에 위치 하고 있다. (해당 기사 작성일 2011년 기준 [역자 주]) 유념해서 봐야할 부분은 이렇다.

 

1. KeepAlive : KeepAlive 설정 전환. “KeepAlive on”이라고 넣으면 켜는 것이고 “KeepAlive off”라고 하면 끄는 것이다.

 

2. MaxKeepAliveRequests : 하나의 지속적인 연결에서 서비스를 제공할 요청의 최대 값을 설정한다. 50 과 75 사이 정도면 충분할 것이다.

 

3. KeepAliveTimeout :  연결된 사용자(Clients)로 부터 새로운 요청을 받기 까지 서버가 얼마나 기다릴 것인가 를 설정한다. 기본값은 15초 이지만 (httpd.2.4.25기준으로는 5초[역자 주])  이것은 너무 높다. 1에서 5초 사이로 설정하는 것이 요청을 기다리는 동안 프로세스를 물고있는 RAM의 낭비를 줄일 수 있다.

 

4. 다른 설정들
KeepAlive는 Apache 설정 파일과 직접적 연관이 없는 다른 설정들에 영향을 받는다. 여기에 Apache prefork MPM 웹서버 세팅이 있다.

 

1) MaxClients : MaxClients은 발생되는 요청을 처리하기 위해 Apache로 부터 실행되는 자식 프로세스들의 최대 값을 설정한다. KeepAlive를 사용한다면 피크타임(peak time [서비스 수요의 정점][역자 주])동안 보다 많은 자식 프로세스의 수를 활성화 할 것이다. 그리고 MaxClients 값도 아마도 증가 시켜야 한다.

 

2) MaxRequestsPerChild : 죽거나 재생성되기 전까지 자식 프로세스에 할당되는 요청의 수. 이것은 메모리 누수를 방지 한다. 각각의 지속적인 접속(Connection)에 대해 KeepAlive가 켜져 있을 때 하나의 요청 당 숫자를 계산한다. 그것은 MaxRequestsPerChild를 자식 프로세스 값 당 최대 접속(Connection) 수로 설정한다.  결과 적으로 KeepAlive를 허용 한다면 보다 적은 MaxRequestPerChild를 설정 할 수 있게 된다. 만약 KeepAlive를 허용 하지 않으면 당신은 초과되는 CPU 사용을 막기 위해 MaxRequestPerChild 값을 높여야만 한다


결론

 

 

Apache를 조정하는데 있어 어떤 것도 절대적인 해답이 될 수 없다. 자원의 배치와 당신이 소유하는 사이트의 종류에 영향을 받는다.  KeepAlive를 적절히 이용한다면 서버 자원을 최소한으로 소모하면서 보다 나은 사용자 환경을 제공할 수 있을 것이다. 만약 이것이 다수의 동시접속자에게 직면한다면 그에 따른 책임도 존재한다.

 

출처 : https://abdussamad.com/archives/169-Apache-optimization:-KeepAlive-On-or-Off.html

역자 꼬리말 : 제가 전문 번역가가 아니라서 오역과 의역이 존재 할 수도 있습니다.

 

 

Apache 속도 향상 테스트

접속지역 : Dulles .VA

웹 브라우저 : Chrome

커넥션 : Cable (5/1 Mbps 28ms RTT)

웹 페이지 http://comanote.net/xe

 

Case 1  (Non KeepAlive) --(Load Time = 6.152s)

 

Keep-alive 미적용.png

 

Case 2  (KeepAlive Default) --(Load Time = 5.016s)

 

설정값

MaxKeepAliveRequests : 150

MaxAliveTimeout : 5

 

Keep-Alive Default.png

 

Case 3  (KeepAlive Setting 1) --(Load Time = 5.227s)

 

설정값

MaxKeepAliveRequests : 50

MaxAliveTimeout : 1

 

Keep-alive Minimum.png

 

Case 4  (KeepAlive Setting 2) --(Load Time = 5.202s)

 

설정값

MaxKeepAliveRequests : 75

MaxAliveTimeout : 5

 

Keep-alive Maximum.png

 

사진 및 파일 첨부

여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.

파일 용량 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )
List of Articles
번호 제목 글쓴이 날짜 조회 수