Używam serwera hobby ze starożytnego Blue & White G3 / 300 z systemem Debian PPC Squeeze 2.6.30. Wydajność jest w porządku przez chwilę po ponownym uruchomieniu, ale w końcu staje się coraz bardziej zablokowana. W tej chwili ma 76 dni nieprzerwanego działania, a głównym winowajcą wydaje się być użycie pamięci przez ponad 10 procesów Apache2.
Myślę, że muszę obniżyć wartości dla StartServers
, MinSpareServers
i / lub MaxSpareServers
, ale nie jestem pewien, który z nich dostosować, a dla każdego z nich są trzy sekcje, w zależności od używanego modułu mpm.
Jak powiedzieć, którą z poniższych sekcji muszę zmienić i jakie są niektóre rozsądne wartości, biorąc pod uwagę, że pudełko ma 448 MB pamięci fizycznej (dziwna historia uaktualnień dla każdej z 64, 128 i 256 pamięci)?
<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>
W moim apache2.conf nie ma żadnych innych instancji StartServers, ale żaden z tych modułów mpm nie pojawia się w mods-available
lub mods-enabled
. Pomysły?
Dzięki!
źródło
Odpowiedzi:
400 MB to dziś niewiele na serwer sieciowy - warto rozważyć wymianę skrzynki :)
To powiedziawszy, jeśli twoje użycie pamięci jest balonowe, prawdopodobnie masz gdzieś wyciek pamięci - aby szybko przetestować teraz rozmiar procesów httpd, zatrzymaj / uruchom Apache i sprawdź, czy są one znacznie mniejsze. Jeśli będą je obserwować przez kilka dni i zobacz, czy rosną.
Jeśli jest to wyciek pamięci, prawdziwym rozwiązaniem jest znalezienie i naprawienie wycieku pamięci, ale ponieważ zwykle jest to ból w tyłku, możesz również dostosować się
MaxRequestsPerChild
do czegoś innego niż 0 (nieograniczony). Zabije to pracowników Apache, gdy obsłużą określoną liczbę żądań (zmuszając ich do zrezygnowania z wycieku pamięci podczas procesu.Zacznij od większych wartości (w przybliżeniu w tysiącach) i przejdź do setek. Jeśli otrzymasz mniej niż 100 żądań na dziecko, wyciek pamięci jest wystarczająco duży, aby uzasadnić faktyczne naprawienie go, ponieważ wydajność związana z ciągłym zabijaniem i ponownym spawnowaniem pracowników apache będzie znacząca.
Re: które mpm dostosować, odpowiedź jest prawie na pewno
prefork
.Możesz uruchomić
httpd -V
i poszukaćServer MPM:
linii, która na pewno Ci powie.źródło
Aby ograniczyć wykorzystanie pamięci przez proces apache, będziesz chciał dostosować MaxClients.
Ogólna zasada jest następująca: (Maks. Pożądana pamięć) / (Wykorzystanie pamięci przez 1 proces Apache) = # Maksymalna liczba klientów
Na koniec musisz również dostosować swoją wartość do MaxSpareServers <= Maksymalna liczba klientów .
Wykorzystanie pamięci przez jeden proces jest silnie zależne od modułów, które załadowałeś (php itd.), Więc możesz chcieć ustawić Max Clients nieco niżej.
źródło