Optymalizacja preforków Apache - wybór właściwej wartości `MaxRequestsPerChild`


9

Próbuję zoptymalizować nasze serwery sieciowe, aby obsługiwały jak najwięcej połączeń. Przeczytałem wiele postów i notatek Apache. Próbuję zrozumieć, dla której wartości mam wybrać MaxRequestsPerChild.

Na początku próbowałem ustawić go na 4000, ale serwer miał trudności z obsługą wielu żądań, więc zacząłem je zwiększać. W tej chwili moje ustawienia to:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  40000
</IfModule>

Po ustawieniu wartości MaxRequestsPerChild40 000 serwer zdołał obsłużyć więcej połączeń, nie zużywając więcej pamięci / procesora.

Czy ktoś może mi powiedzieć, czy ta wartość jest zbyt wysoka, czy może mieć tak wysoką wartość?

Dzięki!

Informacje o systemie operacyjnym:

[root@web06 ~]# uname -a
Linux web 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux
[root@web06 ~]# free
             total       used       free     shared    buffers     cached
Mem:       3814660    3502968     311692          0     144368    2970468
-/+ buffers/cache:     388132    3426528
Swap:      5210104          0    5210104

Odpowiedzi:


10

MaxRequestsPerChildjest naprawdę przydatny tylko do ograniczania upływu pamięci w czasie podczas uruchamiania skryptów dynamicznych. Jeśli po prostu podajesz treść statyczną lub bardzo małe / proste skrypty, prawdopodobnie możesz ustawić ją na 0 lub bardzo wysoką bez większego efektu. Jeśli używasz większych / złożonych skryptów, ustawienie 0 / high spowoduje, że procesy Apache będą zużywać coraz więcej pamięci. Dokładnie o ile więcej zależy od konkretnej aplikacji.

Z drugiej strony, ustawienie jej na bardzo niskim poziomie może faktycznie spowodować nieco większe użycie procesora, ponieważ procesy Apache są ciągle restartowane.

Zrobiłbym prosty test, aby zobaczyć, ile pamięci mogą zużywać twoje procesy. Ustaw MaxRequestsPerChildna 0 i zrestartuj Apache. Testuj załadowanie kilku stron i zobacz, jaki jest początkowy rozmiar procesów Apache top. Sprawdź ponownie po kilku godzinach / dniach / tygodniach (w zależności od aplikacji i wyświetleń strony) i zobacz, jak rośnie. Jeśli nie rośnie zbytnio, wartość 0 lub bardzo duża wartość MaxRequestsPerChildpowinny być w porządku.

Jeśli masz ustawiony maksymalny rozmiar dla procesów Apache (tzn. Chcesz, aby miały one 50 MB lub mniej), możesz wykonać ten sam test z różnymi wartościami, MaxRequestsPerChildaż znajdziesz wartość, która utrzymuje Apache mniejszą.


1
Jak mogę przetestować ładowanie stron i zobaczyć rozmiar procesów Apache przy użyciu Windows Server?
Ahmad Alfy
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.