질문Q #14234
Apache Memory Leak 대응방법
도라에몽2016-07-15 14:36:47

apache 2.2.15 Stable , php7, mysql 5.5

SSD 250GB, 4Core, 8GB Ram, CentOS 6.6

위의 사양으로 가비아 클라우드 서버를 운영하고 있었습니다. 

하루 UV는 15000 정도인데 PV가 60만 정도 되는 곳입니다. 

URL은 http://bigtoon.donga.com CI로 개발되었지요. 

 

위의 차트 이미지 보시다시피 메모리 점유량이 계속 증가합니다. 

도대체 무슨문제일지 거래처 팀장님과 열심히 구글링하며 연구했었습니다. 

apache MaxRequestsPerChild 설정이 문제라는 이야기만 찾을수 있었습니다. 

 

그러다가 https://blog.lael.be/post/1090 이 링크의 내용을 발견했습니다. 

요점은 cache메모리의 반환 입니다. (위 링크의 내용은 우분투 내용이지만 centos에서도 실행 됩니다.)

#sync && echo 3 > /proc/sys/vm/drop_caches

이렇게 실행시키면 캐시를 반환합니다.

위의 차트 이미지에서 보이는 메모리가 확 줄어든때가 위의 명령어가 실행된 때입니다. 

 

결국 매일 cron으로 등록해놓기로 했습니다. 

0 4 * * * sync && echo 3 > /proc/sys/vm/drop_caches

메모리가 7~80% 가까이 점유하게 되면 가끔 apache가 죽는지 서비스가 1~2분 가량 죽는 경우가 생기더군요. 

매일 새벽 4시에 메모리 반환하도록 설정했으니 이제야 조금 마음이 놓이네요. 

답변3
#1 한대승(불의회상) 2016-07-15 17:50:01
좋은 팁 감사 합니다.
#2 변종원(웅파) 2016-07-15 18:32:56
반환율 훌륭한데요? 메모리 8G짜리 개발서버의 메모리 사용률이 80%가 넘었는데 실행하고 나니 25%대로 뚝 떨어지네요
#3 마카오최 2016-07-16 12:07:01

캐쉬메모리가 계속 누적되듯이 지속적으로 쌓이는 문제..

저는 카페24 서버호스팅을 사용중에 오래전에 이문제에 대해 문의한적이 있거든요.

결론은 카페24 서버팀에서도 저 명령어를 그대로 알려줬었죠..

신기한건 저는 그래서 가끔식 체크 하고 수동으로 처리하다가

어제 오전에 아~ 이럴바엔 크론으로 돌려버려야겠다 생각하고 크론탭에 등록했거든요..

그런데 이런글이 같은날에 딱 올라오는걸 보니 완전 신기하네요 ㅎㅎ

마치 제 서버를 누가 보는 기분~..ㅎ