Strona 1 z 1

Problem z apache

: 26 czerwca 2012, 13:11
autor: stoku
Witam

Serwer VPS z debianem 6 Q6600 4GB RAM
Linux 3.2.13-grsec-xxxx-grs-ipv6-64
Problem polega na bardzo dużym zużyciu pamięci
Apache2 z mpm-worker i wirtualnymi hostami
<IfModule mpm_worker_module>

StartServers 2
MinSpareThreads 2
MaxSpareThreads 4
ServerLimit 8
ThreadLimit 16
ThreadsPerChild 5
MaxClients 5
MaxRequestsPerChild 50
</IfModule>
Można ograniczyć ilość uruchomionych jednocześnie virtual hostów? Teraz ilość zadań potrafi przekroczyć 600 i serwer przestaje odpowiadać. Stron jest około 250, ale w większąści proste w php. Nie mogę znaleźć przyczyny.

: 26 czerwca 2012, 20:03
autor: grzesiek
O ile rzeczywiście masz MPM Worker to jego konfiguracja jest totalnie "zmieszana", chyba nie rozumiesz tych derektyw. Możesz mieć maksymalnie 5 klientów?? ServerLimit to ilość procesów potomnych Apache, a w każdym możesz mieć ThreadsPerChilddo 5 zapytań w wątkach. I wszystkiego razem możesz mieć 5?? Po za tym resetowanie procesu po 50 zapytaniach, gdzie w każdym może być do 5 wątków, to każdy obsłuży tylko 10 i koszt tworzenia, eee

Po za tym ile masz rdzeni do dyspozycji? Procesor ma 4, to wiem ale czy tyle masz do dyspozycji. Pytam, bo myślę, że przy takim stanie rzeczy MPM Worker to zły wybór. Na procesach pewnie by chodził wydajniej. Testowałeś to w ogóle?

Co do pamięci to musisz policzyć wszystko, koszt jednego zapytania składa się z pamięci Apache, php, MySQL, potem jeszcze czasy kończenia połączeń, które nakładają się z nowymi i spokojnie możesz dodać jakieś 25% jeżeli nie modyfikowałeś żadnych finów czy timeoutów. FastCGI dużo daje i eAccelerator. Ogólnie to bardzo złożony proces, takie rzeczy sprawdza się w apache2ctl, rzucona przez Ciebie konfiguracja nic nie daje. Mówi tylko tyle, że nie wiesz co robisz.

: 27 czerwca 2012, 08:57
autor: stoku
Zdecydowanie przesadziłem z ograniczeniami. Chciałem ograniczyć zużycie pamięci i poszedłem złą drogą. Zmieniłem ustawienia i będę sprawdzał.
<IfModule mpm_worker_module>
StartServers 2
MaxClients 100
MinSpareThreads 25
MaxSpareThreads 50
ThreadsPerChild 10
MaxRequestsPerChild 1000
</IfModule>
FastCGI jest włączone i do dyspozycji mam 4 rdzenie. Dziękuje za sugestie.