LINUX

아파치 httpd.conf 세팅

OJR 2009. 6. 19. 23:04

대형 사이트에 php를 붙이기 위해 아파치 서버(리눅스가 아닌 윈도우) 세팅을 해야 했다.

미리 말해두는데 이 것을 위해 APM_Setpup 4를 설치 하였는데 이 버전의 아파치는 좀 문제가

있는것 같다. 대형 사이트에 서비스하기 위해서 설치하는 거라면 APM_Setup처럼 마피아 프로그램

이 전부 설치되는 버전말고 아파치, php 이렇게 필요한 것만 따로 따로 구해서 설치 하도록 하자.

 

아파치를 설치하고 기본 세팅으로 서비스를 시작하면 물론 서버 다운이 될 가능성이 매우 크다.

좀 더 안정적인 서비스를 위해서는 그에 따른 서버 세팅이 필요하다.

여기서는 바뀌어야 하는 부분만 쓸 것이다. 여기에 있지 않은 항목은 기본값을 사용하면 된다.

이 세팅은 본인이 서비스 했을 때 어느정도 안정적이다라고 생각하는 세팅으로 머신의 성능에

따라 혹은 여러 변수에 따라 이 세팅은 옳은 세팅이 아닐 수도 있다.

참고로 이 세팅이 적용된 웹서버의 사양은

 

cpu : 제온 2기가 듀얼 / 메모리 : 1기가 / os : window2000 server  였다.

 

http.conf 바뀌어야 할 부분

 

* KeepAlive : off

기본은 on으로 되어있다. 한 번의 접속에서 여러개의 일을 처리할 것인가를 결정하는 것이데

off로 놔도 성능에서 차이가 나는 부분은 느끼지 못했다. 이 것을 off로 하면 keepalive에 관계되는

항목 (MaxKeepAliveRequests라던지, KeepAliveTimeOut 같은)에 영향을 받지 않는다.

 

* MinSpareServers : 20

  MaxSpareServers : 60

아파치에서 MaxSpareServers 개수 이상의 서버 프로세스를 생성하지 않으며 MinSpareServers

보다 서버 프로세스가 적으면 프로세스를 생성한다. Max 값은 그렇게 클 필요는 없고 이 정도가

적당한 것 같다.

 

MaxClients : 1024

동시에 접속할 수 있는 클라이언트 갯수를 조정하는 것이다. 근데 간혹 아파치 버전에 따라 이 값의

상한이 제한되어 있다. 아파치 설치 된 폴더에 보면 include 폴더가 있고 여기에 httpd.h 파일이있다. 여기에 찾아보면

 

#ifndef HARD_SERVER_LIMIT

#ifdef WIN32 

#define HARD_SERVER_LIMIT 1024 

#elif defined(NETWARE) 

#define HARD_SERVER_LIMIT 2048 

#else 

#define HARD_SERVER_LIMIT 256 

#endif 

#endif 

 

이런 항목이 있다.

이렇듯 각 상태마다 HARD_SERVER_LIMIT  라는 값으로 MaxClients 수를 제한하고 있으니

원하는 값으로 이 수를 고친 후 아파치를 제 컴파일 해야 값이 적용이 된다.

 

* ThreadPerChild : 300

다음으로 본인이 생각하기에 가장 중요한 설정이 아닌가 싶다 --; 다른 값들은 어느 정도 기본값으로도 어느정도 버티는데 이 값이 작으면 그야말로 잠시도 버티지 못하게 된다. 서버 다운이 되거나

그렇지 않으면 웹 속도가 정말 느려서 서비스 할 수 없다. 이 값도 무턱대로 늘린다고 제대로 적용이 되지 않는다. 250~300 사이가 적당한 것 같다. 이 값은 반드시 체크해 두자

 

이 것 외에 다른 부분에서 바꿀 것은 그다지 없어 보인다. 참고로 나는 대형 사이트 (대형 사이트라 함은 하루 뷰가 10만 이상, 동접 1000정도 되는 것을 기준으로 한다)에 서비스를 붙이려면 적어도

L4 같은 로드 밸런싱 장비가 있고 웹서버 여러대를 붙여서 서비스 해야 하는 줄 알았다. 즉 웹서버 한 대로는 서비스가 무리 일거라고 생각했다. 하지만 막상 해보니 그렇지 않았다. 위에 적어 놓은 사양의 웹서버로도 충분히 그 기능을 다할 수 있었다. 물론 그에 따른 세팅이 필요하겠지만 말이다.

 

[출처] 아파치 httpd.conf 세팅|작성자 욘들


반응형

'LINUX' 카테고리의 다른 글

vim TIP  (0) 2009.06.30
fileencoding 변경  (0) 2009.06.30
리눅스 screen  (0) 2009.06.03
[삽질] CentOS apache virtualhost 설정  (0) 2009.05.25
shell script  (0) 2009.04.29