본문 바로가기
프로그래밍언어/패턴, 알고리즘, 프로토콜

Window에서 아파치+톰캣 연동시 httpd.exe 메모리 누수 관련

by plog 2011. 9. 22.

Windows 2003에서 아파치(Apache2.2)와 톰캣을 연동하여 웹서버를 구축하였다.
그리고 특별한 문제 없이 웹 사이트가 잘 운영되고 있었다.

어느날 우연히 시스템 관리자가 웹서버를 하루에 한번 이상씩 재부팅을 해주고 있음을 알게 되었다.
httpd.exe 프로세스가 메모리가 줄지 않고 계속 증가하여 결국 서버다운이 되어
사전에 방지하기 위해 서버를 주기적으로 재부팅한다는 사실 -_-;;

여러 루트를 통해 정보를 수집한 결과
가장 많은 답변이 ...
"왜 Windows에서 아파치 톰캣을 돌리냐 리눅스로 바꾸세요" 였다
맞는 말이지만... 개발 환경이 항상 원하는대로 되나 -_-;;



결론
OS문제를 떠나 메모리 누수가 발생하여 계속 증가하는 것으로 판단.
프로그램 소스에 문제가 없다는 가정하에 ... 아파치 환경파일 수정

httpd.conf 에서   주석(#) 제거
...
# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf
...
extra/httpd-mpm.conf 에서 MaxRequestsPerChild    해당 부분 수치 조정
# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum  number of requests a server process serves
<IfModule mpm_winnt_module>
    ThreadsPerChild      150
    MaxRequestsPerChild    1000
</IfModule>

MaxRequestsPerChild  숫자
자식 프로세스가 숫자 만큼 요청을 처리후 종료된다는 의미 (0은 종료없이 계속 실행)

Description:
Limit on the number of requests that an individual child server will handle during its life
Syntax: MaxRequestsPerChild number

댓글