아파치 메모리 누수..
안녕하세요..
몇가지 조언을 구하고자 글을 올립니다.
현재 시스템 상황은 다음과 같습니다.
ㅁ웹서버 설정
- OS : AS2.1 Kernel : 기본커널
- 어플리케이션 : Apache 1.3.29 , PHP-4.3.4 Oracle Client 9.0.2.1
아피치 컴파일 옵션
./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a --enable-module=php4 --enable-module=headers --enable-module=so --enable-shared=max --enable-rule=SHARED_CORE
php의 oci함수를 이용해서 오라클서버에 접속.
- httpd.conf 설정
KeepAlive Off
MinspareServer 5
MaxSpareServer 10
MaxRequestPerChild 0
ㅁ DB서버
- OS : AS2.1 (기본커널) Oracle 9.0.2.1
이런 상태에서 웹서비스를 합니다. 동시접속자수는 초당 5명 정도 붙는거 같고.
근데 문제는 아파치 차일드 프로세서가 메모리 반환을 제대로 못한다는 겁니다..혹시나 커널 문제일까 싶어..커널을 2.4.25로 업그레이드를 했지만
역시나 증상은 같습니다..
여러모로 메모리가 어디서 누수되는지 찾아봤지만 소스에도 문제가 없는거 같고 해서 찾다가 찾다가 못찾아서..아파치 설정을 약간 수정했습니다.
Maxrequestperchild 설정을 2000정도로 설정하게 되면 아파치 차일드 프로세서가 2000건의 웹요청을 처리하고 재생성 되므로 메모리를 반환하고 차일드 프로세서는 재생성 됩니다..
그래서 임시방편으로 이렇게 해서 세팅을 해서 사용하고 있습니다..
MaxrequestPerChild 2000으로 설정을 하게 되면 메모리 관리는 임시방편으로 가능합니다.
근데 어는 순간부터..아파치 차일드 프로세서가..한건 처리하고 죽고 한건처리하고 죽고 이런식으로 운영됩니다..서버에서 강제로 아파치 차일드프로세서를 죽입니다.
강제로 아파치가 죽게되므로..아파치 차일드 프로세서는 defunct상태에서 죽습니다. 웹서버의 CPU나 메모리 사용률은 극히 저조합니다..
그리고 동일한 웹서버2대로 라우드로빈 방식으로 운영중인데 2개의 서버의 증상이 동일합니다.
서버의 아파치 상태는 부모프로세서 한개와..차일드 프로세서가 유동적으로
한개에서 최대 5~10개로 왔다갔다 합니다..
클라이언트에서 아파치 웹서버에 웹요청을 하기되면 ..그순간 아파치 부모프로세서가반응을 하게되고 차일드 프로세서를 띄우므로 약간의 웹접속이 지연되는 증상이 나타납니다..
아파치 데몬을 리스타트하기 되면 한동안은 문제없이 돌아가는데..하루정도 운영하게 되면 또 증상은 나타납니다..
그리고 다른 서비스 환경의 동일 컴파일옵션과 동일 서버로 DB를 mysql로 접속하는 서버는 문제가 없는데..유독 오라클로 접속하는 서버에만 문제가 발생합니다..
혹시..오라클과 php(oci함수)에 버그가 있는게 아닐까도 생각해 봤습니다만..
특별한 버그 리포트를 찾지 못했습니다..
뭐가 문제 일까요..?
Re: 아파치 메모리 누수..
php 를 업데이트 해 보십시오. 4.3.4 와 4.3.5 는 버그로 악명
높은 버전입니다.
혹시 apache + php-4.3.8 + oracle.9.0.2.1로
혹시 apache + php-4.3.8 + oracle.9.0.2.1로 연동설치 해보셨나요..?
4.3.5설치 할때와 같은 컴파일 옵션으로 설치하면 컴파일은 문제없이 되는데 오라클 연동이 안되던데요..?
룰루랄라
댓글 달기