선배님들 안녕하세요. 깨비홈서버 왕초보입니다^^

혹시라도 도움이 되실지 몰라 글을 올리게 되었네요.

제 PC에서도 예전 APM Setup 사용시부터 아파치 프로세스의 메모리 사용량이 점점 커지는(거의 300KB에 근접) 현상이 있었습니다.

이는 APM 프로그램의 문제라기보다 아파치서버 자체(정확하게는 윈도우용 아파치서버)의 문제로 판단됩니다.(APM Setup을 사용하건 Autoset을 사용하건 유사한 증상 발생)

고민끝에 혹시 쓰레드나 처리요청수의 설정관계상 사용이 완료된 메모리까지 계속 붙잡고 있지않나 싶기에 디폴트 설정치인

ThreadsPerChild 250
MaxRequestsPerChild  0

를 다음과 같이 수정해 보았더니 최대 약 25KB까지 올라갔다가 다시 내려갔다 또다시 올라갔다 하더라구요.(25KB까지 올라갔다가 저절로 사용량이 줄어드는 것이 반복됨)

ThreadsPerChild 50
MaxRequestsPerChild  250

여기서 MaxRequestsPerChild를 줄이면 메모리사용량이 예를들어 19KB라는 식으로 내려가는 것을 발견했습니다.
(물론 제 PC에서 그랬다는 말씀이고 컴퓨터의 사양이나 접속자수, 접속환경 등에 따라 크게 달라질 것으로 생각됩니다. 실험결과는 사용자수가 많을때 의미가 크기에 동적(dynamic)이라기보다 정적(static)인 테스트 결과로 참고하시면 될 듯 싶네요. 제 PC는 듀얼코어 6300@1.86GHz에 램 1GB입니다. 조촐하죠^^)
(처음에는 ThreadsPerChild 0으로 글을 올렸었는데 다양한 형태의 웹 페이지(간단하거나 복잡한 php, cgi 등)를 출력해가며 실험해 본 결과, 일부 프로그램의 실행이 느려질수 있어 10~100사이에서 설정하는 것이 좋을듯 싶네요.)

또한 Timeout 시간이나 KeepAlive 여부, MaxKeepAliveRequests, KeepAliveTimeout 설정에 의해서도 메모리 사용량이 변동되기는 하나 한두명 접속한 정도로는 결정적이지 못한것 같습니다.

덧붙여 이미 잘 알고 계시겠지만 웹문서들을 찾아보니 프로세스의 메모리 사용량을 줄이기 위하여 다음사항들을 권고하더라구요.

-꼭 필요한 모듈만 사용한다.
-동시요청수(Simultaneous Requests)를 줄인다.
-KeepAlives로 설정하되 유지시간은 너무 길지 않게
-로그를 줄인다.
-호스트명을 가져오지 않는다.
-가급적 .htaccess 파일 사용을 자제한다.

한가지 추가하면 제 서버의 경우, 아파치 프로세스가 메모리를 많이 차지하던 문제 이외에도 드물게 홈페이지로의 접속이 느려져서 나중에 서버를 살펴보면 아파치 프로세스가 죽어있는 경우도 발생했으나 이는 메모리 사용량과는 무관한 것으로 확인되었습니다.(아마도 제가 사용하는 웹빌더의 문제(또는 아파치와 웹빌더의 합작품ㅋ)인듯...)

허접한 글 읽어주셔서 감사드리며 오늘도 즐거운 하루 되시길 바랍니다.

감사합니다.