2011-05-06 12 views
13

¿Hay una manera de ver lo que los tiempos de espera, intervalos u operaciones asíncronas (o bucles sin fin) todavía están funcionando y están deteniendo mi proceso de terminar?Node.JS: ¿Herramienta para ver por qué el proceso todavía se está ejecutando?

he sido capaz de averiguar hasta ahora sin una herramienta de este tipo, sino una herramienta de este tipo sería muy útil sobre todo porque los proyectos Node.JS aquí comienzan a aumentar de tamaño.

Pienso en Java de kill -3 que imprime un seguimiento de pila en stderr. Puede hacer esto para cualquier proceso, en cualquier momento, depuración o no. Me gustaría un equivalente para Node.JS. (Sé que el nodo es de un solo subproceso asíncrono con lo que haría de manera diferente de salida)

+3

tuve un problema similar, usted está funcionando en este tema cuando se ejecutan pruebas con algún tipo de base de datos? Por ejemplo, las pruebas de mi unidad cuando estaba usando mongodb nunca saldrían debido a los intervalos de tiempo/intervalos internos de mongo. – kcbanner

+0

@kcbanner: en MySQL, debe finalizar la conexión antes de que el proceso salga automáticamente. Puede ser lo mismo en mongodb? ¿O ya lo has intentado? –

+0

Sí, terminar la conexión lo corrige. – kcbanner

Respuesta

5

El módulo why-is-node-running es exactamente lo que necesita.

var log = require('why-is-node-running') 
setTimeout(function() { 
    log() // logs out active handles that are keeping node running 
}, 100) 

y la salida es algo así como:

There are 4 known handle(s) keeping the process running and 0 unknown 
Known handles: 
# Timer 
/Users/maf/dev/node_modules/why-is-node-running/example.js:6 - setInterval(function() {}, 1000) 
/Users/maf/dev/node_modules/why-is-node-running/example.js:10 - createServer() 

# TCP 
/Users/maf/dev/node_modules/why-is-node-running/example.js:7 - server.listen(0) 
/Users/maf/dev/node_modules/why-is-node-running/example.js:10 - createServer() 

# TCP 
/Users/maf/dev/node_modules/why-is-node-running/example.js:7 - server.listen(0) 
/Users/maf/dev/node_modules/why-is-node-running/example.js:11 - createServer() 

# Timer 
/Users/maf/dev/node_modules/why-is-node-running/example.js:13 - setTimeout(function() { 
+0

¡Impresionante! No puedo esperar para probar esto! –

+0

¡Esto es todo! ¡Gracias! –

Cuestiones relacionadas