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.