2012-06-26 5 views
6

Ich bin derzeit Profilerstellung meiner node.js-Anwendung. Ich fand dieses Blog: http://blog.nodejs.org/2012/04/25/profiling-node-js/, die schlägt vor, ich sollte Dtrace verwenden. Ich installierte dtrace auf Ubuntu 12.04 Schritte, die hier gegeben werden: https://askubuntu.com/questions/60940/how-do-i-install-dtraceProfilierung von Node.js mit DTrace

Jedoch, wenn ich diesen Befehl in meinem Terminal laufen, während meine Knoten-Anwendung ausgeführt wird:

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

stacks.out bleibt leer, außer dies: CPU ID FUNKTION: NAME 1 387695: tick-60s

Irgendwelche Vorschläge, was könnte falsch sein?

+0

Mit der neuesten node.js in Linux können Sie sich Systemtap ansehen. Ich weiß nicht, wie viel unterstützt wird. Messen GC => https://gist.github.com/bnoordhuis/4078925. Ich habe noch nicht damit gespielt, sieht aber vielversprechend/interessant aus. – Alfred

Antwort

7

Die Linux-DTrace-Implementierungen sind derzeit sehr jung und es fehlt eine Reihe wichtiger Funktionen (und sind in keiner Weise für den produktiven Einsatz bereit). Insbesondere hat die DTrace-Implementierung, die Sie verwenden (Paul Fox), nicht viel getan, wenn Arbeit zur Unterstützung von Userspace-Ablaufverfolgung ausgeführt wird. Das kannst du unter Linux (momentan) nicht machen.

Wenn Sie dies zum Laufen bringen wollen, müssen Sie ein Betriebssystem mit einer vollständigeren Implementierung von DTrace verwenden. Am besten verwenden Sie einen der Derivate (wie OmniOS, SmartOS oder OpenIndiana).

Sie sollten den Abschnitt "Voraussetzungen" der the article you linked to erneut lesen. Es besagt, dass Sie auch sicherstellen müssen, dass Sie 32-Bit-NodeJS mit DTrace-Unterstützung verwenden, die zur Kompilierungszeit aktiviert wird.

(Mac OS X hat eine Implementierung gut DTrace, aber the article nach nicht ustack Helfer unterstützt, die für dieses Beispiel benötigt werden.)

+0

So installieren Sie node.js auf OmniOS (auf Illumos basierendes Betriebssystem): https://gist.github.com/dalssoft/5595688 –

3

@psanford eine gute Antwort hat speziell beteiligt Ihre Probleme mit DTrace, aber von Ihrem Eröffnungssatz, es sieht aus wie Sie wollen ist in der Lage, Ihre Node.js App zu verfolgen, und DTrace war nur ein Beispiel dafür, wie dies zu tun ist.

In diesem Fall würde eine Kombination von node-inspector und v8-profiler Ihnen die gewünschte Introspektion in Ihrer Anwendung bieten. Ich bin mir nicht sicher, ob es mit Node 0.6.x funktioniert, seit ich das letzte Mal mit 0.4.10 benutzt habe.

1

Oracle announced DTrace Verfügbarkeit auf Oracle Linux. Sie können diese Distribution here herunterladen.