재무 모델링을 수행하는 무거운 Drupal 웹 사이트를 운영하고 있습니다. 우리는 아파치 프로세스가 안정적으로 유지되는 동안 아파치가 사용하는 초과 근무 메모리가 증가한다는 사실을 감안할 때 일종의 메모리 누수가 발생하는 것으로 보입니다.
메모리 문제가 발생할 때마다 /etc/init.d/httpd reload
메모리 사용량이 감소 할 때마다 아파치 / PHP에서 메모리 문제가 발생한다는 것을 알고 있습니다 (위 스크린 샷 및 CLI 출력 아래 참조).
httpd 다시로드하기 전에
$ 무료 캐시 된 총 사용 가능한 공유 버퍼 멤 : 49447692 45926468 3521224 0191100 22609728 -/ + 버퍼 / 캐시 : 23125640 26322052 스왑 : 2097144 536552 1560592
httpd 다시로드 후
$ 무료 캐시 된 총 사용 가능한 공유 버퍼 멤 : 49447692 28905752 20541940 0191360 22598428 -/ + 버퍼 / 캐시 : 6115964 43331728 스왑 : 2097144 536552 1560592
각 아파치 스레드 memory_limit
에는 512MB 의 PHP가 할당되며, 이는 높은 메모리 사용량으로 인해 적은 양의 요청을 정의하고 max_execution_time
120 초 동안 실행되는 데 시간이 오래 걸리는 스레드를 종료해야하므로 메모리 사용량의 지속적인 증가를 막아야합니다. 봄.
Q :이 메모리 누수의 원인을 어떻게 조사 할 수 있습니까?
이상적으로 개발자 팀을 방해하지 않고 시스템에서 수행 할 수있는 문제 해결 단계를 찾고 있습니다.
추가 정보:
OS: RHEL 5.6
PHP: 5.3
Drupal: 6.x
MySQL: 5.6
참고로 우리는 우리가 별도로 조사하고있는 스와핑 문제를 알고 있으며 스와핑이 시작되기 전에 관찰 한 메모리 누수와 관련이 없습니다.
memcached
라이브러리를 사용하고 있습니다. memcache 관리 페이지를 기반으로 memcache.php
볼 때 우리가 볼 수있는 것은 5GB
memcache에 할당 되어 있으며이 3.3GB
중 사용중인 것입니다. 당신이 우리를 더 도울 수 있다면 좋을 것입니다.
memcached
데몬 자체는 괜찮을 것입니다. 메모리를 유출하거나 유출하지 않을 수있는 PHP memcache 라이브러리입니다 (따라서 Apache 프로세스 메모리 사용이 증가합니다). 내 문제는 약 1-2 년 전이므로 문제가 해결되었을 수 있습니다. 어쨌든 memcached가 필수 사항이 아닌 경우 잠시 비활성화하고 Apache 메모리 사용량이 여전히 증가하는지 확인하십시오.
httpd
메모리 사용량이 계속 증가하고 결국 메모리 부족 커널 메시지로 인해 상자가 충돌한다는 것입니다. 메모리 사용이 메모리 한계에 도달 할 때까지 성능이 양호합니다. 교환 문제를 무시하십시오.