강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

아파치웹서버 튜닝 : 아파치 최대 방문자수 올리기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

아파치웹서버 튜닝 : 아파치 최대 방문자수 올리기

 

 

 

 

아파치웹서버를 관리하다 보면 가끔씩 이런 경험을 한 적이 있었을 것이다.

 

 

 

 

  하드웨어의 사양과 서버의 성능 및 네트워크의 부하가 전혀 없음에도 불구하고 웹서비스 속도가 현저하게 떨어지는 경험이 있을 것이다.

 

 

 

 

 물론, 접속자수가 매우적고 서비스량이 적은 경우에는 다르겠지만 다른 문제가 전혀 없음에도 불구하고 웹서비스 속도가 굉장히 떨어지는 이유는 아파치의 컴파일시 옵션이 제대로 맞추어지지 않았거나 아파치 환경설정파일들(httpd.conf)의 설정문제일 가능성이 클 것이다.

 

 

 

 

 

 

네트워크와 서버의 하드웨어 사양 문제가 아님에도 불구하고 이와 같은 웹서비스 성능저하가 초래된다면 아파치 튜닝작업을 해봐야 한다.

 

 

 

 

 

 

이번 절에서는 아파치설치시에 하게되는 컴파일 옵션설정과 아파치 운영중에 httpd.conf와다른 설정파일들 특히 httpd-mpm.conf파일의 설정에 대해서 운영하고있는 서버에 맞게 설정하는 방법에 대해서 간단히 알아볼까 한다.

 

 

 

 

 

 

여러분들도 잘 알다시피 아파치 컴파일과정에는 configure라는 작업과정이 있다.

 

 

 

 

  configure 작업을 하기 전에 다음과 같은 설정작업을 해주는 것이 좋다.

 

 

 

 

 이부분은 앞장의 아파치 설치부분에서 이미 설명을 하였지만 간단히 설명하면 다음과 같다.

 

 

 

 

 

 

 

[APACHE 최대 접속자수 늘리기위한 configure설정]

다음은 아파치소스파일의 압축해제한 디렉토리내에 있는 server/mpm/prefork디렉토리의 prefork.c파일을 vi로 오픈한 예이다.

 

 

 

 

 

 

[root@sulinux httpd-2.2.11]#vi server/mpm/prefork/prefork.c

 

그리고 “DEFAULT_SERVER_LIMIT”값을 4096으로 설정하였다.

 

 

 

 

 

 

#ifndef DEFAULT_SERVER_LIMIT

#define DEFAULT_SERVER_LIMIT 4096

#endif

 

그리고 “server/mpm/worker”디렉토리내에 있는 worker.c파일을 vi로 오픈하였다.

 

 

 

 

 

 

[root@sulinux httpd-2.2.11]#vi server/mpm/worker/worker.c

 

이 파일내에 있는 “DEFAULT_SERVER_LIMIT”값을 20으로 수정하였다.

 

 

 

 

 

 

#ifndef DEFAULT_SERVER_LIMIT

#define DEFAULT_SERVER_LIMIT 20

#endif


위의 설정들에서 DEFAULT_SERVER_LIMIT 의 기본값으로 256이 설정되어있다.

 

 

 

 

 이 설정은 httpd.conf 파일에서 설정되는 “MaxClients”항목을 상한값을 설정해 둔 것이다.

 

 

 

 

 즉 동시에 접속할 수 있는 방문자 수라고 할 수 있을 것이다.

 

 

 

 

 좀 더 정확한 의미로는 동시에 생성할 수 있는 아파치 자식프로세스의 최대생성갯수가 될 것이다.

 

 

 

 

 

 

이 예는 “DEFAULT_SERVER_LIMIT”값을 4096으로 수정한 예이다.

 

 

 

 

 이렇게 설정해두면 동시에 접속할 수 있는 방문자수는 4096까지 허용된다.

 

 

 

 

 httpd.conf 또는 httpd-mpm.conf파일에서 “MaxClients” 설정값을 4096까지 높여서 설정할 수 있다는 것을 의미한다.

 

 

 

 

 

 

그리고 이에 맞는 httpd-mpm.conf 파일의 설정내용을 다음과 같이 적당한 값으로 수정해서 사용한다.

 

 

 

 

 

 

MaxKeepAliveRequests 값은 높을수록 성능은 좋아질 수 있다.

 

 

 

 

 

 

MaxKeepAliveRequests   10000

 

앞에서 httpd.conf파일의 설정법에 대해서 자세히 설명하였듯이 이값의 의미는 연결을 유지한채로 허용할 수 있는 최대 요구수를 나타낸다.

 

 

 

 

 이 값이 0라면 제한하지 않는다는 의미가 되며 일반적으로 이 수치가 높을수록 성능은 좋아지게 된다.

 

 

 

 

 따라서 필자는 이 수치를 10000으로 설정하였다.

 

 

 

 

 

 

KeepAliveTimeout 값은 동일한 방문자(Client)가 동일한 연결을 유지한 채로 다음 요청을 할때까지 연결을 유지한 채로 기다림을 허용하는 시간()를 의미한다.

 

 

 

 

 따라서 필자는 여기서 25라는 수치를 지정하였다.

 

 

 

 

 즉 동일한 방문자가 동일한 브라우즈로 연결을 한 채로 25초동안 다음 요청이 이루어지지 않았다면 연결을 끊은 것으로 판단하고 그 방문자의 서비스를 위해서 생성했던 httpd프로세스를 죽이게 된다.

 

 

 

 

 

 

KeepAliveTimeout  25

 

MinSpareServers MaxSpareServers httpd.conf를 설명한 절에서도 충분히 설명된 내용이지만 다시한번 간략히 정리해본다면 다음과 같다.

 

 

 

 

 “MinSpareServers”수치는 방문자수가 많지않은 경우라도 최소한 여기서 지정한 개수만큼의 유휴 httpd프로세스수는 유지하기 위한 설정이다.

 

 

 

 

 또한 “MaxSpareServers”는 방문자수가 많을 경우에 최대한 허용되는 데몬수는 “MaxClients”항목에서 설정된 수치까지이지만 가능하다면 여기 “MaxSpareServers”에서 설정한 유휴프로세스수까지 줄이고자 노력한다는 의미이다.

 

 

 

 

 

 

MinSpareServers  15

MaxSpareServers  45

 

필자는 이 값을 각각 15 45로 설정하였다.

 

 

 

 

 

 

다음으로 “StartServers”수치는 20으로 설정하였다.

 

 

 

 

 여러분들도 알겠지만 이 수치는 아파치가 처음으로 실행이 될 때에 생성할 httpd 데몬의 개수를 지정한 것이다.

 

 

 

 

 솔직히 이 수치의 의미는 실행시에 몇 개의 데몬을 실행할 것인가라는 것 외에는 별 의미가 없다.

 

 

 

 

 

 

StartServers 20

 

마지막으로 “MaxClients”항목이다.

 

 

 

 

 사실 이번 절에서는 이 항목의 설정내용이 가장 중요하다고 할 수 있다.

 

 

 

 

 “DEFAULT_SERVER_LIMIT”의 값을 4096으로 설정하였으므로 “MaxClients”값을 4096으로 설정한 것이다.

 

 

 

 

 

 

MaxClients 4096

 

이상과 같이 설정하여 아파치를 운영한다면 성능면에서 굉장히 좋은 효과를 볼 수 있을 것이다.

 

 

 

 

 한가지 주의할 것은 이런 설정이 효과를 보시려면 최소한 하드웨어의 사양은 어느정도 갖추어져야 한다는 것이다.

 

 

 

 

 

 

이번절에서 설명한 각 지시자의 값들을 설정하실 때에는 여러분들이 관리운영하고있는 서버의 방문자수, 서버부하율, 서버H/W사양, 그리고 네트워크 대역폭등을 충분히 고려해야 한다.

 

 

 

 

 



 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  84 명