2012-10-29 12 views
18

Wdrażamy aplikację Node.js. Ta aplikacja wydaje się zużywać więcej pamięci RSS niż powinna. Więc zaczęliśmy do nurkowania w rzeczy, a okazało się, co następuje dzięki process.memoryUsage();Co to jest awaria pamięci node.js?

  • Pamięć RSS szybko rośnie do około 400MB i pozostaje mniej lub bardziej stabilny w 400MB-500MB, z małymi wzloty i małe upadki (Czyszczenie pojemnika na odpady?)

  • Wykorzystane hałdy szybko rosną do 50 MB, a następnie pozostają na tym poziomie (od 20 MB do 100 MB).

  • Haptotom jest zawsze o około 30 MB więcej MB niż w stosie.

Jak widzisz, istnieje ogromna różnica między stosem a RSS, w którym powinniśmy się skupić. Wydaje się, że nie ma żadnego bardzo znaczącego wycieku w naszym hałdzie.

Co jest w RSS, którego nie ma na kupce? Wierzę, że rozszerzenia C i bufory, prawda? Jeśli tak, jak możemy to debugować. Czego jeszcze powinniśmy szukać?

+1

Nie zgłaszaj problemu. Co próbujesz osiągnąć? –

+2

Próbuję znać podział pamięci zużywanej przez aplikację node.js, konkretnie dlatego, że istnieje taka różnica między rozmiarem sterty i zużyciem RSS. –

+0

Tak, ale w jakim celu? Czy ta sytuacja stanowi problem dla twojego kodu lub jesteś po prostu ciekawa? Pytam, ponieważ nie jestem pewien, w jakich okolicznościach może to być problem inny niż uruchamianie węzła w systemie z ograniczoną pamięcią. –

Odpowiedz

3

Bez wiedzy o tym, co robi Twoja aplikacja, nie można tego komentować.

Jeśli użycie sterty V8 jest znacząco niższe niż RSS, to tak, musi to być bufor zewnętrzny i inna pamięć używana przez obiekty inne niż V8.

Czy możesz upublicznić kod?

+0

Niestety nie jest publiczny. Więc RSS = Heap + Bufory + C Biblioteki? –

+0

@JulienGenestoux Czy sprawdziłeś 'węzeł --v8-options'? Może jest tam ustawienie, które ograniczy zużycie pamięci. – EhevuTov

+1

@EvvuTov Naprawdę nie chcę ograniczać użycia pamięci, ponieważ prawdopodobnie zabiłoby to aplikację. Nie chcę wiedzieć, gdzie (i dlaczego) dzieje się ta pamięć. –