Skocz do zawartości
Bartko

Apache + Lighttpd, a KeepAlive

Polecane posty

Używam Apache'a z MPM prefork na stronie z materiałami multimedialnymi. Dużo obrazków oraz większe pliku multimedialne po kilkanaście MB. Używałem przez kilkanaście ostatnich miesięcy KeepAlive On oraz konfiguracji:

 

KeepAlive On

<IfModule mpm_prefork_module>

StartServers 25

MinSpareServers 10

MaxSpareServers 35

ServerLimit 3520

MaxClients 3520

MaxRequestsPerChild 150

</IfModule>

 

Pliki graficzne i multimedialne obsługiwał Lighttpd, ale poprzez Apache Proxy, bo mam tylko jedno IP dostępne.

Obecnie zmieniłem system na Debian 6.0 i przy pierwszej konfiguracji dojeżdza do 1003 procesów i zaczyna się mulić strona. Chyba brakuje dostępnej pamięci ram. Musiałem zmienić na:

 

KeepAlive Off

<IfModule mpm_prefork_module>

StartServers 25

MinSpareServers 10

MaxSpareServers 35

ServerLimit 1000

MaxClients 1000

MaxRequestsPerChild 150

</IfModule>

 

Głównie chyba wyłączenie KeepAlive pomoga, bo spada liczba procesów do 300.

 

1)

Czy Debian 6.0 inaczej obsługuje procesy apache'a niż Debian 5.0. Właśnie po zmianie systemu zaobserwowałem zmianę.

 

2)

Czy jak używam Lighttpd poprzez proxy Apache (przekierowanie na inny port) dla większych plików i obrazków to czy wtedy też proces Apache jest trzymany dzięki KeepAlive aż do końca wczytywania się dużego pliku?

 

3)

Czy może jakoś można stuningować konfigurację, aby mimo włączonego KeepAlive ni było tyle procesów i zajętego całego ramu. Próbowałe z KeepAliveTimeout 2, ale bez zmian.

 

4)

Czy może lepiej całość (Apache + Lighttpd) zamienić na LiteSpeed?

 

Edycja:

Dodam jeszcze, że testowałem konfigurację z KeepAlice On na Debianie 6.0 i na dwóch serwerach i wszędzie jest 1002 procesów Apache'e po chwili od uruchomienia. Jednocześnie zajmuje się cała dostępna pamięć RAM (24GB) mimo, że wcześniej było jej dużo GB wolnego.

Edytowano przez Bartko (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Może komuś coś powiedzą logi z munina. Widać na nich, że przy włączonym KeepAlive liczba procesów osiąga 1000 (mimo, że deklarowałem 1500 akurat dzisiaj). Pamięć też się kończy. Tak jakby chciało zająć 22 GB, a serwer ma tylko 12GB wbrew temu co pisałem, ze ma 24GB.

 

Apache procesy

apacheprocessesday.png

 

Pamięć

memoryday.png

 

Sprawdzane na PHP 5.4.0 i dzisiaj na PHP 5.4.1. Problem wciąż występuje.

Edytowano przez Bartko (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

serverlimit=maxclients=liczba klientow na Twoim serwerze. Kazdy klient to proces i tak sie zbiera. Nigdy nie uzywalem apache jako reverse proxy. Moze nie radzi sobie z tym? Poszukaj czegos zaprojektowanego do takich rzeczy jak haproxy, nginx, varnish czy traffic server.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@up ma rację. Jeśli obrazki i duże pliki są podawane tylko dla Twojej strony to postawi nginx'a jako reverse proxy i podawaj nim obrazki + większe pliki, a resztę zostaw Apache. Możesz też całkowicie zapomnieć o Apache, czyli nginx + php-fpm.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×