CentOS에서 Amazon AMI 기반으로 실행되는 1.7GB 메모리의 작은 ec2 인스턴스에 Apache가 너무 많은 메모리를 사용하는 데 문제가 있습니다. 스크린 샷을 보면 httpd 서비스를 재부팅 할 때까지 메모리 사용량이 90-100 %이며 다시 시작하여 90 + %로 돌아갑니다.
문제를 찾는 방법에 대한 도움을 주셔서 감사합니다. 사용 가능한 모든 메모리를 사용하기 위해 이것이 “정상적인”아파치 동작입니까? 아니면 사냥해야 할 수도있는 누수가 있습니까? 현재 나는 무슨 일이 일어나고 있는지에 대해 조금 당황합니다.
우리는 Apache MPM 프리 포크를 사용하고 있으며 SQL이나 그와 비슷한 것은 없습니다. 웹 사이트는 여기에 있습니다 .
답변
HTTP500이 말했듯이 머신이 실제로 질식하지 않는 한 걱정하지 않아도됩니다. 한 번 봐 가지고 도움말을! 리눅스는 내 RAM을 먹었다! . RAM을 사용하는 버퍼가 아닌 프로세스가 있기 때문에 상당히 유사한 상황은 아니지만 너무 멀지는 않습니다. 머신의 물리적 RAM은 커널 버퍼 또는 여분의 Apache 작업자 프로세스와 함께 사용되는 리소스입니다. 요청. RAM을 사용하지 않는 경우 상자 크기를 초과 지불했습니다.
어쨌든 MPM 설정을 사용하려면 Apache 설명서는 http://httpd.apache.org/docs/current/mod/prefork.html 입니다 .
사이트의 트래픽이 적다고 언급했듯이 MinSpareServers, StartServers 등을 줄일 수 있습니다. 그런 다음 사악한 목적으로 커널 버퍼에서 더 많은 여유 RAM을 사용할 수 있습니다.
답변
모든 메모리를 사용하는 리눅스는 정상이며, 사용하지 않는 메모리는 디스크 캐시로 다시 사용됩니다. 참조 : 리눅스는 내 램을 먹었다
출력을보고 이것을 확인 free -m
하고 다음과 같은 것을 기대할 수 있습니다.
total used free shared buffers cached
Mem: 7889 6887 101 0 106 2307
-/+ buffers/cache: 5373 3416
Swap: 1903 17 1886
+/- buffers / cache 라인은 원하는 것입니다. 캐시 된 램을 추가하여 실제로 사용 가능한 메모리 양을 더 잘 파악할 수 있습니다. 이 경우 101이 아닌 3416 번호에주의를 기울이려고합니다.