2011-04-09 13 views
11

Oto co mam do tej pory przeczytać i poprawcie mnie jeśli się mylę:node.js i V8 garbage collection

  1. node.js jest oparta na silniku V8 JavaScript.
  2. silnik V8 JavaScript realizuje Stop-świecie Garbage Collection

Which..causes node.js czasami całkowicie zamknięcie kilku sekund do kilku minut, aby obsłużyć zbierania śmieci.

Jeśli dotyczy to kodu produkcyjnego, jest to kilka sekund dla 10 000 użytkowników.

Czy jest to rzeczywiście dopuszczalne w środowisku produkcyjnym?

Odpowiedz

12

To, czy jest do przyjęcia, zależy od aplikacji i wielkości sterty. Big Gc to około 1,3ms na MB. YMMV. O połowę mniej niż w przypadku kompaktowania GC. Około 1 GC na 10 jest duże. Około 1 dużej wartości GC na 3 to kompaktowanie. Użyj flagi V8 --trace-gc, aby logować GC. Zrobiliśmy trochę pracy nad zmniejszeniem pauz. Bez obietnic, bez rozkładów. Zobacz oddziały/experimental/gc w repozytorium V8.

+13

Ta odpowiedź nie jest nieco przestarzała. Wzrost GC wylądował, a długie przerwy powinny być już przeszłością. Jeśli nadal widzisz duże przerwy w GC, zgłoś błąd i dołącz wynik --trace-gc. Nie możemy składać obietnic dotyczących naprawiania, oczywiście, ale przy normalnych obciążeniach roboczych spodziewalibyśmy się górnego limitu pauz około 40-50ms, lub około 4ms, jeśli użyjemy -max-new-space-size = 1024 - -jednocześnie kompaktowe flagi. –

Powiązane problemy