2011-04-09 28 views
11

Esto es lo que he leído hasta ahora, y me corrija si me equivoco:Node.js y V8 de recolección de basura

  1. Node.js se basa en el motor JavaScript V8.
  2. motor V8 JavaScript implementa dejar al mundo en la recolección de basura

Which..causes Node.js para apagar veces completamente durante unos pocos segundos a unos pocos minutos para manejar la recolección de basura.

Si esto se ejecuta para el código de producción, son unos pocos segundos para 10.000 usuarios.

¿Es esto realmente aceptable en el entorno de producción?

Respuesta

12

Si es aceptable depende de su aplicación y su tamaño de almacenamiento dinámico. Big Gc es alrededor de 1.3ms por Mbyte. YMMV. Aproximadamente la mitad de eso para un GC compactante. Alrededor de 1 GC en 10 es grande. Alrededor de 1 gran GC en 3 es compactante. Use el indicador V8 --trace-gc para registrar los GC. Hemos hecho algo de trabajo para reducir las pausas. Sin promesas, sin horarios. Ver branches/experimental/gc en V8 repo.

+13

Esta respuesta no está desactualizada. El GC incremental ha aterrizado y las pausas largas deberían ser cosa del pasado. Si todavía está viendo grandes pausas de GC, por favor presente un error y adjunte la salida de --trace-gc. No podemos hacer promesas sobre cómo arreglar las cosas, por supuesto, pero para las cargas de trabajo normales esperaríamos un límite superior para las pausas de alrededor de 40-50ms, o alrededor de 4ms si usamos --max-new-space-size = 1024 - banderas nunca compactas –

Cuestiones relacionadas