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
. 아이디어?
감사!
답변
요즘 웹 서버에는 400MB가 많지 않습니다. 상자를 교체하는 것이 좋습니다. 🙂
즉, 메모리 사용량이 급증하면 어딘가에 메모리 누수가 발생할 수 있습니다. 지금 httpd 프로세스의 크기를 빠르게 테스트하려면 Apache를 중지 / 시작하고 더 작은 지 확인하십시오. 그들이 며칠 동안 그들을보고 그들이 성장하는지 확인하십시오.
메모리 누수 인 경우 실제 해결책 은 메모리 누수 를 찾아서 수정하는 것이지만 일반적으로 엉덩이에 통증이 있기 때문에 MaxRequestsPerChild
0 이외의 다른 것으로 조정할 수도 있습니다 (무제한). 이렇게하면 고정 된 수의 요청을 처리 한 Apache 작업자가 프로세스에서 누수 된 메모리를 포기해야합니다.
더 큰 값 (수천 정도)으로 시작하여 수백 가지로 내려갑니다. 자 식당 100 개 미만의 요청을받는 경우, 메모리 누수는 실제로이를 수정하기에 충분할만큼 커져서 아파치 작업자를 지속적으로 죽이고 다시 생성하는 데 따른 성능 저하가 상당 할 것입니다.
다시 : 어떤 mpm을 조정 해야하는지, 대답은 거의 확실 prefork
합니다.
당신은 실행 httpd -V
하고 Server MPM:
확실하게 줄을 찾을 수 있습니다 .
답변
아파치 프로세스의 메모리 사용을 줄이려면 MaxClient를 조정해야합니다.
일반적인 경험 법칙은 다음과 같습니다. (최대 원하는 메모리) / (1 Apache 프로세스의 메모리 사용량) = # 최대 클라이언트
결국 MaxSpareServers <= Max Clients 로 조정해야합니다 .
한 프로세스의 메모리 사용량은로드 한 모듈 (php 등)에 따라 크게 달라 지므로 Max Clients를 조금 더 낮게 설정할 수 있습니다.