Apache 2 메모리 사용량 제한


9

Debian PPC Squeeze 2.6.30을 실행하는 고대 Blue & White G3 / 300에서 취미 웹 서버를 실행하고 있습니다. 다시 시작한 후 잠시 동안 성능은 정상이지만 결국에는 성능이 점점 저하됩니다. 지금은 가동 시간이 76 일이며 주요 원인은 10 개 이상의 아파치 2 프로세스의 메모리 사용량 인 것 같습니다.

나는에 대한 값을 낮출 필요가 있다고 생각 StartServers, MinSpareServers및 / 또는 MaxSpareServers,하지만 확실 조정 할 사람이 아니에요, 각이있는 MPM 모듈 사용에 따라 세 가지 섹션이 있습니다.

다음 섹션 중 어떤 부분을 변경해야하는지, 상자에 448MB의 실제 메모리 (64, 128 및 256 개의 스틱마다 하나씩 이상한 업그레이드 기록)가있는 경우 어떤 합리적인 값이 무엇인지 어떻게 알 수 있습니까?

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

내 apache2.conf에 StartServers의 다른 인스턴스는 없지만 mpm 모듈은 mods-available또는에 나타나지 않습니다 mods-enabled. 아이디어?

감사!


나는 당신의 상자에 메모리가 부족하다는 가정하에 갔다. 당신이 교환하지 않으면 자세한 내용은 당신을 버그 것입니다 :-)
voretaq7

답변:


6

요즘 웹 서버에는 400MB가 많지 않습니다. 상자를 교체하는 것이 좋습니다. :)

즉, 메모리 사용량이 급증하면 어딘가에 메모리 누수가 발생할 수 있습니다. 지금 httpd 프로세스의 크기를 빠르게 테스트하려면 Apache를 중지 / 시작하고 더 작은 지 확인하십시오. 그들이 며칠 동안 그들을보고 그들이 성장하는지 확인하십시오.

메모리 누수 인 경우 실제 해결책 은 메모리 누수 를 찾아서 수정하는 것이지만 일반적으로 엉덩이에 통증이 있기 때문에 MaxRequestsPerChild0 이외의 다른 것으로 조정할 수도 있습니다 (무제한). 이렇게하면 고정 된 수의 요청을 처리 한 Apache 작업자가 프로세스에서 누수 된 메모리를 포기해야합니다.

더 큰 값 (수천 정도)으로 시작하여 수백 가지로 내려갑니다. 자 식당 100 개 미만의 요청을받는 경우, 메모리 누수는 실제로이를 수정하기에 충분할만큼 커져서 아파치 작업자를 지속적으로 죽이고 다시 생성하는 데 따른 성능 저하가 상당 할 것입니다.


다시 : 어떤 mpm을 조정 해야하는지, 대답은 거의 확실 prefork합니다.
당신은 실행 httpd -V하고 Server MPM:확실하게 줄을 찾을 수 있습니다 .


1
-V는 내가 필요한 prefork 정보를 주었다. (필자의 경우 apache2 -V이지만). 감사!
UltraNurd

트릭을 한 것 같습니다. 문제는 실제 메모리가 부족하고 너무 많은 자식 서버가 작동했기 때문에 스왑한다는 것입니다 (각각 약 80MB). 그리고 예, 나는 서버가 오래되었다는 것을 알고 있습니다. 그러나 그것은 거의 모든 요청을 처리하지 않습니다.
UltraNurd

1
많은 요청을 처리하지 않는 경우 원래 게시물에서 언급 한대로 Start & Spare 서버 수를 다듬을 수 있습니다 (개발 시스템에서는 RAM 사용량을 줄이기 위해 2에서 5 사이로 설정했습니다)
voretaq7

나는 최소와 최대 스페어를 5와 10에서 3과 6으로 떨어 뜨리고 결국 RAM을 남겨 두어 물건을 교환하지 못하게합니다. 감사!
UltraNurd

1

아파치 프로세스의 메모리 사용을 줄이려면 MaxClient를 조정해야합니다.

일반적인 경험 법칙은 다음과 같습니다. (최대 원하는 메모리) / (1 Apache 프로세스의 메모리 사용량) = # 최대 클라이언트

결국 MaxSpareServers <= Max Clients 로 조정해야합니다 .

한 프로세스의 메모리 사용량은로드 한 모듈 (php 등)에 따라 크게 달라 지므로 Max Clients를 조금 더 낮게 설정할 수 있습니다.

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