Skocz do zawartości
Dariusz Cieślak

Sposób na mniejsze zużycie pamięci w OpenVZ

Polecane posty

Często po zainstalowaniu RoR/Django na VPS-ie OpenVZ zdarza się, że przestajemy mieścić się na serwerze wirtualnym. Proces fastcgi zajmuje w pamięci 70 MB (VSZ) pomimo, że aplikacja nie zawiera jeszcze zbyt wiele funkcjonalności.

 

Winę za tak duże zużycie pamięci witualnej (która jest ograniczona w OpenVZ) jest domyślny rozmiar stosu dla procesu. Pod linuksem domyślnie stos zajmuje 8 lub 10 MB. Należy to przemnożyć przez liczbę wątków w aplikacji i wychodzi duże zużycie pamięci.

 

Rozwiązaniem jest zmniejszenie domyślnego rozmiaru stosu dla aplikacji. W większości przypadków wystarczy tylko 128 KB. Jak to zrobić? Jest kilka rozwiązań:

 

  • można przed uruchomieniem procesu wydać polecenie "ulimit -s 128"
  • można umieścić ograniczrenia w /etc/security/limits.conf, ale dotyczą one tylko sesji użytkownika (nie będą obowiązywały dla procesów Apache)

Najbardziej efektywnym rozwiązaniem będzie jednak umieszczenie tego wywołania w /etc/init.d/rc: "ulimit -s 128". Wtedy zmiana jest widoczna dla wszystkich procesów w systemie.

 

Dzięki tej operacji udało mi się zmniejszyć zapotrzebowanie na pamięć z 248 MB do 83 MB (Apache prefork + PHP + Django), czyli zredukować je o ponad 60%. Sam proces Django FastCGI zajmuje teraz 17 MB, czyli zmiana jest jest znacząca.

 

Więcej szczegółów i "bibliografia": tutaj.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
vzfreeday.th.png

 

Dzięki za informację, mam nadzieję, że nie będzie żadnych niepożądanych efektów :huh:

Niektóre aplikacje mogą wymagać większej przestrzeni na stosie do działania. Z moich testów wynika, że 128 .. 256 KB per wątek w zupełności wystarcza. jeśli pojawi się komunikat stack overflow można limit zwiększyć dwukrotnie. Nawet przy 512 KB / wątek jest zysk w stosunku do domyślnej wielkości stosu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie korzystam z Django, ani ROR, ale z ciekawości chętnie przetestuję ten sposób dla zwykłego LAMP.

512KB ustawiłem, zobaczymy, czy będzie się sypać i czy będzie różnica w szybkości serwera... .

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ę


×