Prowadzę witrynę intensywnie odwiedzającą wiele dynamicznych treści, głównie generowanych przez użytkowników.
Serwer jest dedykowany i ma w sumie 4 procesory Intel (R) Xeon (R) X3210 @ 2.13GHz. Muszę wiedzieć, jakie są optymalne wartości dyrektyw apache ServerLimit i MaxClients, biorąc pod uwagę, że serwer ma 4 GB pamięci RAM, a baza danych MySQL działa na osobnym serwerze. Panel to DirectAdmin z CentOS.
Poniżej znajdują się moje aktualne dyrektywy, ale w godzinach szczytu z udziałem ponad 5 000 użytkowników zauważone jest ważne opóźnienie - i to nie w całości wina MySQL, ponieważ strony wydają się być generowane szybko (zaimplementowałem licznik czasu generowania strony), ale jest długi opóźnienie połączenia do momentu, gdy strona zacznie odpowiadać i zostanie wysłana do przeglądarki.
<IfModule prefork.c>
StartServers 800
MinSpareServers 20
MaxSpareServers 60
ServerLimit 900
MaxClients 900
MaxRequestsPerChild 2000
</IfModule>
Timeout 90
KeepAlive On
KeepAliveTimeout 5
Powinienem wspomnieć, że monitorowanie serwera za pomocą najwyższego polecenia, użycie procesora nigdy nie przekracza 20% ~ 30% w godzinach szczytu. Serwer MySQL ma w tym czasie również 30 ~ 50% użycia i ciągle pracuję nad naprawą powolnych zapytań, ale to inny problem. Wiem, że to nie jest wąskie gardło DB, ponieważ strony statyczne również ładują się w godzinach szczytu.
Dziękujemy za wszelkie wskazówki dotyczące optymalizacji tych wartości.
źródło
Musisz uzyskać średni rozmiar procesu apache. Na podstawie tej liczby i całkowitego rozmiaru pamięci RAM można obliczyć dyrektywę MaxClients. Pamiętaj o tym: „Serwer nigdy nie powinien wymieniać” ( strojenie wydajności Apache )
Monitorowanie za pomocą top lub htop jest w porządku, ale potrzebujesz lepszego widoku wszystkich statystyk swoich serwerów (procesora, pamięci RAM, operacji we / wy dysku, żądań apache, wolnych zapytań mysql itp.) Za pomocą narzędzia do monitorowania, takiego jak zwoje lub munin, aby znaleźć możliwe wąskie gardła.
źródło
Polecam bawić się narzędziem do testowania wydajności abache. Możesz bawić się wartościami, aby dopasować je do natężenia ruchu i zobaczyć, jakie odpowiedzi otrzymujesz, jeśli chodzi o średni czas ładowania i tym podobne. W tym momencie możesz pobawić się ustawieniami, o których mówisz, aby je zoptymalizować. Powinieneś być w stanie z ab uzyskać kontrolę nad optymalną wydajnością dla każdej poprawki wydajności.
Mówienie o twoich ustawieniach nie byłoby rozsądne, ale musisz także wziąć pod uwagę pamięć RAM, ponieważ wygląda na to, że jesz dużo pamięci RAM przy tych ustawieniach. Chociaż to tylko spekulacje bez żadnych danych. htop zapewnia dobry wizualny odczyt twoich zasobów.
Również średnia wartość obciążenia może wiele powiedzieć. Wątpię, aby twoje użycie było znacznie wyższe niż całkowita liczba rdzeni z 20-30% procesora, ale jest to kolejny wskaźnik tego, jak ciężko działa twój serwer.
źródło