Dariusz Cieślak 3 Zgłoś post Napisano Kwiecień 11, 2009 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
wielokropek 0 Zgłoś post Napisano Kwiecień 11, 2009 Dzięki za informację, mam nadzieję, że nie będzie żadnych niepożądanych efektów Udostępnij ten post Link to postu Udostępnij na innych stronach
Dariusz Cieślak 3 Zgłoś post Napisano Kwiecień 11, 2009 Dzięki za informację, mam nadzieję, że nie będzie żadnych niepożądanych efektów 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
BlueMan 69 Zgłoś post Napisano Kwiecień 12, 2009 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