From http://httpd.apache.org/docs/2.2/misc/perf-tuning.html
Największym problemem sprzętowym wpływającym na wydajność serwera WWW jest pamięć RAM. Serwer sieciowy nigdy nie powinien wymieniać, ponieważ zamiana zwiększa opóźnienie każdego żądania poza punkt, który użytkownicy uważają za „wystarczająco szybki”. To powoduje, że użytkownicy uderzają w stop i przeładowują, co jeszcze bardziej zwiększa obciążenie. Możesz i powinieneś kontrolować ustawienie MaxClients, aby twój serwer nie spawnował tak wielu dzieci, które zaczną zamieniać. Ta procedura jest prosta: określ rozmiar średniego procesu Apache, przeglądając listę procesów za pomocą narzędzia takiego jak top, i podziel go na całkowitą dostępną pamięć, pozostawiając miejsce dla innych procesów.
Głównym problemem jest to, że nie rozumiem, jak poznać rozmiar, ponieważ, no cóż, mam rozmiar httpd na nie więcej niż 3888
Ale jeśli musimy ustalić liczbę dla MaxClients, a ja mam 4 GB pamięci RAM, to otrzymuję: 972, więc powinienem użyć około 900 w MaxClients?
źródło
Odpowiedzi:
Najpierw określ PID jednego z procesów Apache.
Następnie możesz zrobić coś takiego:
cat /proc/PIDHERE/status | grep VmRSS
Spowoduje to (bieżący) rozmiar zestawu rezydentnego tego konkretnego procesu, podobny do:
VmRSS: 304456 kB
Ta wartość brzmi, jak się wydaje, jest to wielkość procesu rezydującego w pamięci RAM.
Następnie znormalizuj swoją jednostkę miary (
4GB * 1024 * 1024 = 4,194,304 KB
). Podzielić:4194304 KB / 304456 KB = 13.77 processes
Weź pod uwagę, że prawdopodobnie w twoim systemie działają inne procesy, które również zajmują pamięć, i idealnie chcesz zminimalizować zamianę, dlatego prawdopodobnie nie chcesz skonfigurować 13 serwerów Apache MaxClients (używając moich numerów), chcesz trochę mniej (według własnego uznania) ).
To jest przybliżony szacunek; rozmiar procesów Apache może z czasem rosnąć w zależności od obciążenia.
źródło
Przewidywanie maxClients na podstawie scenariuszy testowych jest punktem wyjścia - ale aby właściwie rozwiązać problem, musisz zacząć mierzyć, jak Twoja aplikacja zachowuje się przy rzeczywistym ruchu.
Zakładając, że twój apache działa przed rozwidleniem ...
Skonfiguruj zadanie cron, aby policzyć liczbę procesów httpd i wynik „wolny”. Zauważ, że jeśli twój serwer wyświetla jakąkolwiek zawartość z plików lokalnych (aw wielu przypadkach, nawet jeśli nie jest), ilość pamięci dostępnej dla bufora / buforów będzie miała duży wpływ na wydajność. tzn. jeśli dojdziesz do punktu wymiany, Twoja wydajność internetowa jest prawdopodobnie okropna!
Po uzyskaniu danych wykreśl je na wykresie i wykonaj regresję metodą najmniejszych kwadratów - ekstrapoluj, aby znaleźć liczbę klientów, przy których osiągniesz docelowy limit wykorzystania pamięci httpd. Punktem wyjścia dla celu pamięci byłby mniejszy 80% pamięci fizycznej / 80% wielkości zawartości.
(zwróć uwagę, że MinSpareServers ma bardzo wysoką wartość, wyniki mogą być niedokładne)
W idealnym świecie mierzyłbyś również czas odpowiedzi adresu URL w tym samym pliku dziennika - ale jest to o wiele bardziej skomplikowane.
źródło