Przed dostosowaniem dyrektyw musisz zrozumieć, w jaki sposób działają dyrektywy. Pozwól mi wyjaśnić prostym językiem angielskim. Serwer uruchomi 2 procesy potomne określone w dyrektywie StartServers. Każdy proces uruchomi 20 wątków, które są określone przez dyrektywę ThreadsPerChild, więc oznacza to, że 2 proces może obsłużyć tylko 40 jednoczesnych połączeń / klientów (tj. 20 × 2 = 40). Co jeśli więcej zgłoszeń się pojawi.
Teraz, jeśli przyjdzie więcej współbieżnych użytkowników, rozpocznie się kolejny proces potomny, który może obsłużyć kolejnych 20 użytkowników. Ale ile procesów potomnych można uruchomić, jest kontrolowane przez parametr ServerLimit, co oznacza, że w powyższej konfiguracji mogę mieć w sumie 10 procesów potomnych, przy czym każdy proces potomny może obsłużyć 20 wątków, łącznie 10 × 20 = 200 równoczesnych użytkowników .
Ale jest problem, liczba zdefiniowana w MaxClients wynosi tutaj 100, co oznacza, że po 5 procesach potomnych nie rozpocznie się żaden dodatkowy proces, ponieważ zdefiniowaliśmy górną granicę MaxClients. Oznacza to również, że jeśli ustawię MaxClients na 500, po 10 procesach potomnych i 200 połączeniach nie rozpocznie się żaden dodatkowy proces i nie będziemy mogli obsłużyć więcej niż 200 jednoczesnych klientów, nawet jeśli zwiększymy parametr MaxClient. W takim przypadku musimy również zwiększyć ServerLimit do 500/20, tj. MaxClients / ThreadsPerChild = 25
Dobra, teraz znasz dyrektywy i jak one działają, problem polega na tym, jak obliczyć dyrektywy. Przejdźmy do obliczania wartości dyrektyw.
Za pomocą tego skryptu powłoki można określić średnią ilość pamięci zużywanej przez jeden proces Apache. Oprócz tego pokaże całkowitą ilość pamięci zajętej przez wszystkie procesy Apache. Po prostu rozpakuj i uruchom za pomocą polecenia sh. Dokładne wyniki zostaną wyświetlone, gdy serwer jest obciążony.
Wyjście
Wykorzystanie pamięci Apache (MB): 57,586 Średnia wielkość procesora (MB): 10,2
Apache Memory Usage (MB): 57.586
Average Proccess Size (MB): 10.2
jeśli średnio załóżmy, że jeden proces Apache zużywa 50 MB pamięci RAM, a serwer ma pamięć RAM o pojemności 2048 MB, a chcesz pozostawić 512 MB na pozostałe procesy, to:
MaxClients = (2048MB – 512MB)/10MB = 153.6 ~ 153