모든 서버 메모리를 활용하는 Apache“httpd”프로세스


9

CentOS에서 Amazon AMI 기반으로 실행되는 1.7GB 메모리의 작은 ec2 인스턴스에 Apache가 너무 많은 메모리를 사용하는 데 문제가 있습니다. 스크린 샷을 보면 httpd 서비스를 재부팅 할 때까지 메모리 사용량이 90-100 %이며 다시 시작하여 90 + %로 돌아갑니다.

여기에 이미지 설명을 입력하십시오

문제를 찾는 방법에 대한 도움을 주셔서 감사합니다. 사용 가능한 모든 메모리를 사용하기 위해 이것이 "정상적인"아파치 동작입니까? 아니면 사냥해야 할 수도있는 누수가 있습니까? 현재 나는 무슨 일이 일어나고 있는지에 대해 조금 당황합니다.

우리는 Apache MPM 프리 포크를 사용하고 있으며 SQL이나 그와 비슷한 것은 없습니다. 웹 사이트는 여기에 있습니다 .


1
스왑을 사용하지 않는 것 같습니다. 무엇이 문제입니까?
HTTP500

메모리를 너무 많이 사용하는 것이 문제가되지 않습니까? 초보자 경험을 실례합니다. 잘못된 가정 일 수 있습니다. 어쩌면 정상적인 동작이고 Apache가 트래픽이 적은 웹 사이트 임에도 불구하고 잡을 수있는 모든 메모리를 사용하도록 설계 되었습니까?
Amivit

1
나는 당신이 httpd conf 에이 줄을 추가하면 아파치에서 보낸 시간을 기록 할 수있는 NewRelic을 사용하고 있음을 알았습니다 RequestHeader set X-Request-Start "%t". 아직하지 않은 경우. 앱 서버> 개요로 이동하면 "요청 큐"로 표시됩니다. 문제를 해결하는 데 도움이 될 수 있습니다.
KM.

답변:


8

HTTP500이 말했듯이 머신이 실제로 질식하지 않는 한 걱정하지 않아도됩니다. 한 번 봐 가지고 도움말을! 리눅스는 내 RAM을 먹었다! . RAM을 사용하는 버퍼가 아닌 프로세스가 있기 때문에 상당히 유사한 상황은 아니지만 너무 멀지는 않습니다. 머신의 물리적 RAM은 커널 버퍼 또는 여분의 Apache 작업자 프로세스와 함께 사용되는 리소스입니다. 요청. RAM을 사용하지 않는 경우 상자 크기를 초과 지불했습니다.

어쨌든 MPM 설정을 사용하려면 Apache 설명서는 http://httpd.apache.org/docs/current/mod/prefork.html 입니다 .

사이트의 트래픽이 적다고 언급했듯이 MinSpareServers, StartServers 등을 줄일 수 있습니다. 그런 다음 사악한 목적으로 커널 버퍼에서 더 많은 여유 RAM을 사용할 수 있습니다.


4

모든 메모리를 사용하는 리눅스는 정상이며, 사용하지 않는 메모리는 디스크 캐시로 다시 사용됩니다. 참조 : 리눅스는 내 램을 먹었다

출력을보고 이것을 확인 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 번호에주의를 기울이려고합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.