Mam maszynę z 128 GB pamięci RAM, która używa Apache2 jako serwera sieci Web (w tym komputerze nie ma serwera bazy danych, maszyna bazy danych to 64 GB pamięci RAM, która może obsłużyć 2000 połączeń maksymalnych). Widzę za pomocą narzędzia monitorującego, że w tej chwili jest około 44 zajętych pracowników i 12 nieczynnych pracowników, jakie są najlepsze wartości teoretyczne dla mojego modułu prefork?
czasami mam puste strony ładujące witryny w godzinach dużego obciążenia i mam ten błąd w moim dzienniku błędów Apache:
[powiadomienie] child pid 13595 sygnał wyjścia Błąd segmentacji (11)
jak można rozwiązać ten problem?
Konfiguracja modułu Prefork My Apache2:
StartServers 3
MinSpareServers 3
MaxSpareServers 5
ServerLimit 3200
MaxClients 3100
MaxRequestsPerChild 0
Bezpłatnie -h na maszynie www :
łącznie: 128 G bezpłatnie: 97 GB (przy uruchomionym Apache2) współdzielone bufory 0b 1,9G pamięci podręcznej 23G
Ram używany przez Apache2 i inne programy:
Private + Shared = RAM used Program
96.0 KiB + 61.0 KiB = 157.0 KiB sh
176.0 KiB + 26.0 KiB = 202.0 KiB atd
176.0 KiB + 35.5 KiB = 211.5 KiB acpid
208.0 KiB + 19.5 KiB = 227.5 KiB mdadm
204.0 KiB + 30.0 KiB = 234.0 KiB init
248.0 KiB + 62.0 KiB = 310.0 KiB sendmail
376.0 KiB + 36.0 KiB = 412.0 KiB dbus-daemon
388.0 KiB + 285.5 KiB = 673.5 KiB cron (2)
820.0 KiB + 42.0 KiB = 862.0 KiB gam_server
920.0 KiB + 108.0 KiB = 1.0 MiB ntpd
968.0 KiB + 243.0 KiB = 1.2 MiB getty (6)
1.3 MiB + 351.5 KiB = 1.6 MiB udevd (3)
1.5 MiB + 343.0 KiB = 1.8 MiB sendmail-msp
2.0 MiB + 910.0 KiB = 2.9 MiB plugin-localresources2
3.4 MiB + 50.0 KiB = 3.4 MiB rsyslogd
3.6 MiB + 68.5 KiB = 3.7 MiB bash
1.9 MiB + 2.1 MiB = 4.0 MiB sendmail-mta (4)
3.8 MiB + 556.0 KiB = 4.3 MiB sshd (2)
3.7 MiB + 1.2 MiB = 4.8 MiB plugin-apache2
5.1 MiB + 1.2 MiB = 6.3 MiB agent-service
7.0 MiB + 654.0 KiB = 7.6 MiB fail2ban-server
9.6 MiB + 2.6 MiB = 12.2 MiB proftpd (8)
59.2 MiB + 70.0 KiB = 59.3 MiB miniserv.pl
96.8 MiB + 3.6 MiB = 100.4 MiB php5-cgi (2)
196.4 MiB + 35.9 MiB = 232.3 MiB apache2 (40)
---------------------------------
tot 450.0 MiB
źródło
Odpowiedzi:
Ustawienia preforków Apache, wytyczne dostrajania wydajności apache
zacytować:
powinieneś ustawić to w następujący sposób na podstawie danych wejściowych, aby:
Aby to obliczyć, możesz użyć następującego skryptu:
Jest to najlepsze oszacowanie, ile proces pojedynczego apache zużywa pamięć, próbując proporcjonalnie podzielić współużytkowane użycie na liczbę aktywnych procesów apache i dodać je na PSs (proporcjonalny rozmiar zestawu)
Wreszcie dzielisz 115 GB tą liczbą i otrzymujesz
MaxClients/ServerLimit
. Stąd możesz względnie obliczyć inne liczby, takie jakStartServers
30% MaxClientsMinSpareServers
5% MaxClientsMaxSpareServers
10% MaxClientsServerLimit
== MaxClientsMaxConnectionsPerChild
10000 (jako konserwatywna alternatywa dla rozwiązania możliwego problemu z nieszczelnymi aplikacjami)źródło
/server-info
: i.imgur.com/SS2gIXI.png