2011-09-05 9 views
7

Mi sitio web, CompassionPit.com, funciona con Node.js. He liberado el código fuente; es hosted at GitHub. La aplicación en sí se ejecuta en un Linode con 768 MB de RAM (recientemente actualicé el servidor, era de 512 MB).¿Cómo puedo perfilar mi aplicación Node para ver dónde estoy usando la memoria y los recursos de la CPU?

Recientemente he estado recibiendo notificaciones de uso de CPU de Linode: estamos cada vez más a un 90% de uso. Llamé a Linode para ver qué podía hacer para actualizar mi acceso a los recursos de la CPU, pero aparentemente estoy bien por ahora, ya que si maximizamos al 100%, podemos extendernos a los siguientes 3 núcleos (Linodes son 4 procesadores Xen instancias).

¿Cómo puedo perfilar mi aplicación Node para ver dónde estoy usando la memoria y los recursos de la CPU? Pronostico que pronto necesitaré reestructurar la aplicación para que sea ejecutada por una configuración de servidor múltiple, pero intuitivamente creo que un perfil adecuado conducirá a decisiones de arquitectura más inteligentes. Por favor corrígeme si estoy equivocado.

+0

CompassionPit.com parece haber desaparecido, para cualquiera que venga a esta entrada varios años más tarde. – jcollum

Respuesta

0

He tenido un éxito razonable usando https://github.com/dannycoates/node-inspector para perfilar. Hay una guía de configuración en la parte inferior del archivo README.

A partir de las versiones posteriores de Node.js, la parte de creación de perfiles del inspector de nodos ya no funciona. He tenido un éxito razonable con --prof (http://code.google.com/p/v8/wiki/V8Profiler) y https://github.com/c4milo/node-webkit-agent como se menciona en la respuesta a continuación.

+0

Me gustaría decir que desde el canal # Node.js en Freenode, la gente también ha sugerido dtrace (crédito: H4ns) y v8-profiler (Glenjamin). –

3

inspector nodo puede no nodo perfil después de la versión 0.6.x

La siguiente plugin ha sido actualizado para trabajar con la nueva versión de v8 (nodo 0.7.x +). Es el único además de nodetime.com que aún funciona. Se utiliza el depurador webkit real:

https://github.com/c4milo/node-webkit-agent

que tiene instrucciones muy claras también.

+0

Esto ya no es cierto. El inspector de nodo se ha actualizado mientras tanto. – Leo

+0

@LeoKoppelkamm ¿Dónde ve que Node Inspector es compatible con la creación de perfiles? El [README aún indica] (https://github.com/node-inspector/node-inspector#known-issues) "Profiler todavía no está implementado". – John

+0

Me estaba refiriendo al comentario 0.6.x. El inspector de nodo estuvo completamente roto por un tiempo, pero eso se ha solucionado mientras tanto. Voy a editar la respuesta para aclarar eso. – Leo

1

A partir de v6.3.0, you can now runnode --inspect your_script.js.

Node imprimirá una URL a la consola, que se puede abrir en Chrome, que lo conectará para mostrar un inspector web completamente funcional que puede usar para perfilar el proceso de nodo.

Run node --inspect --debug-brk para hacer una pausa inmediatamente la ejecución (que es práctico si usted necesita para comenzar una sesión de perfil tan pronto como se inicia su aplicación)

Cuestiones relacionadas