2012-06-26 15 views
6

Attualmente sto definendo la mia applicazione node.js. Ho trovato questo blog: http://blog.nodejs.org/2012/04/25/profiling-node-js/ che suggerisce che dovrei usare Dtrace. Ho installato dtrace su Ubuntu 12.04 utilizzando fasi qui indicate: https://askubuntu.com/questions/60940/how-do-i-install-dtraceProfiling Node.js utilizzando DTrace

Tuttavia quando si esegue questo comando nel mio terminale mentre mia applicazione nodo è in esecuzione:

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

stacks.out rimane vuoto tranne questo: CPU ID FUNZIONE: NOME 1 387695: tick-60s

Qualche suggerimento cosa potrebbe essere sbagliato?

+0

Con l'ultimo nodo.js in Linux è possibile dare un'occhiata a Systemtap. Non so quanto sia supportato. Misura GC => https://gist.github.com/bnoordhuis/4078925. Non ho ancora giocato con questo, ma sembra promettente/interessante. – Alfred

risposta

7

Le implementazioni di Linux DTrace sono attualmente molto giovani e mancano di una serie di funzioni importanti (e non sono in alcun modo pronte per l'uso in produzione). Nello specifico, l'implementazione di DTrace che si sta utilizzando (Paul Fox) non ha fatto molto, se non altro, per supportare l'analisi dello spazio utente. Quindi non sarai in grado di farlo su Linux (in questo momento).

Se si desidera che questo funzioni, è necessario utilizzare un sistema operativo con un'implementazione più completa di DTrace. La soluzione migliore è utilizzare uno dei derivati ​​Illumos (ad esempio OmniOS, o OpenIndiana).

È necessario rileggere la sezione "prerequisiti" di the article you linked to. Si afferma inoltre che è necessario assicurarsi di utilizzare NodeJS a 32 bit con supporto DTrace attivato in fase di compilazione.

(Mac OS X ha una buona implementazione DTrace, ma secondo the article non supporta aiutanti Cancellazione UStack che sono necessari per questo esempio.)

+0

Per installare node.js su OmniOS (sistema operativo basato su Illumos): https://gist.github.com/dalssoft/5595688 –

3

@psanford ha una buona risposta che coinvolge in particolare i vostri problemi con DTrace, ma dalla tua frase di apertura, sembra che tu voglia sia in grado di tracciare la tua app Node.js, e DTrace era solo un esempio su come farlo.

In tal caso, una combinazione di node-inspector e v8-profiler fornirebbe l'introspezione desiderata nell'applicazione. Non sono sicuro se funziona con il nodo 0.6.x, tuttavia, poiché l'ultima volta che l'ho usato era con 0.4.10.

1

Oracle announced Disponibilità DTrace su Oracle Linux. È possibile scaricare questa distro here.