2012-06-26 29 views
6

Actualmente estoy perfilando mi aplicación node.js. Encontré este blog: http://blog.nodejs.org/2012/04/25/profiling-node-js/ que sugiere que debería usar Dtrace. He instalado dtrace en ubuntu 12.04 siguiendo los pasos que se dan aquí: https://askubuntu.com/questions/60940/how-do-i-install-dtracePerfilando Node.js usando DTrace

Sin embargo, cuando ejecuta este comando en mi terminal mientras mi solicitud nodo está en ejecución:

dtrace -o stacks.out -n 'profile-97/execname == "node" && arg1/{ 
@[jstack(100, 8000)] = count(); } tick-60s { exit(0); }' 

stacks.out permanece en blanco, excepto esto: CPU FUNCIÓN DE ID: NOMBRE 1 387695: tick-60s

¿Alguna sugerencia que podría estar mal?

+0

Con la última node.js en Linux puede echar un vistazo a Systemtap. No sé cuánto se admite. Medir GC => https://gist.github.com/bnoordhuis/4078925. Todavía no jugué con esto, pero parece prometedor/interesante. – Alfred

Respuesta

7

Las implementaciones de Linux DTrace son actualmente muy recientes y faltan una serie de características importantes (y de ninguna manera están listas para su uso en producción). Específicamente, la implementación de DTrace que está utilizando (de Paul Fox) no ha hecho mucho, si es que funciona, para respaldar el rastreo del espacio de usuario. Entonces no podrás hacer esto bajo Linux (en este momento).

Si desea hacer que esto funcione, tendrá que utilizar un sistema operativo con una implementación más completa de DTrace. Lo mejor es usar uno de los derivados Illumos (como OmniOS, SmartOS o OpenIndiana).

Debe volver a leer la sección 'requisitos previos' del the article you linked to. Establece que también debe asegurarse de utilizar NodeJS de 32 bits con soporte DTrace activado en tiempo de compilación.

(Mac OS X tiene una buena aplicación de DTrace, pero de acuerdo con the article No es compatible con ayudantes ustack que son necesarios para este ejemplo.)

+0

Para instalar node.js en OmniOS (sistema operativo basado en Illumos): https://gist.github.com/dalssoft/5595688 –

3

@psanford tiene una buena respuesta que involucra específicamente sus problemas con DTrace, pero desde su oración de apertura, parece que lo que desea es poder rastrear su aplicación Node.js, y DTrace fue solo un ejemplo de cómo hacerlo.

En ese caso, una combinación de node-inspector y v8-profiler le proporcionará la introspección deseada en su aplicación. No estoy seguro si funciona con Node 0.6.x, sin embargo, desde la última vez que lo usé fue con 0.4.10.

1

Oracle announced disponibilidad de DTrace en Oracle Linux. Puede descargar esta distro here.