2012-06-26 5 views
6

현재 node.js 어플리케이션을 프로파일 링하고 있습니다.이 블로그 : http://blog.nodejs.org/2012/04/25/profiling-node-js/에서 Dtrace를 사용해야한다고 제안했습니다.DTrace를 사용하여 Node.js 프로파일 링

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

stacks.out이 제외하고는 아무것도 남아 : 내 노드 응용 프로그램이 실행되는 동안 내 터미널에서이 명령을 실행할 때 https://askubuntu.com/questions/60940/how-do-i-install-dtrace

: CPU를 나는 여기에 주어진 단계를 사용하여 우분투 12.04에 DTrace를 설치 ID 기능 : 이름 1 387695 : tick-60s

어떤 제안이 잘못되었을 수도 있습니다.

+0

Linux에서 최신 node.js를 사용하면 Systemtap을 살펴볼 수 있습니다. 얼마나 지원되는지 모르겠습니다. Measure GC => https://gist.github.com/bnoordhuis/4078925. 나는 이것으로 아직 놀지는 않았지만 유망한/재미있는 것 같습니다. – Alfred

답변

7

현재 Linux DTrace 구현은 매우 어려우며 많은 중요한 기능이 빠져 있습니다 (프로덕션 용도로는 사용할 수 없습니다). 특히 당신이 사용하고있는 DTrace 구현 (Paul Fox 's)은 ​​사용자 공간 추적을 지원하는 어떤 작업도하지 않았다. 그래서 리눅스에서는 (지금 당장) 이것을 할 수 없을 것입니다.

이 기능을 사용하려면 DTrace를보다 완벽하게 구현 한 운영 체제를 사용해야합니다. 가장 좋은 방법은 파생물 중 하나 (예 : OmniOS, SmartOS 또는 OpenIndiana) 중 하나를 사용하는 것입니다.

the article you linked to의 '전제 조건'섹션을 다시 읽어야합니다. 또한 컴파일시 DTrace 지원이 켜져있는 상태에서 32 비트 NodeJS를 사용해야 하는지도 명시해야합니다.

은 (맥 OS X은 좋은 DTrace를 구현을 가지고 있지만, the article에 따라이 예제에 필요한 ustack 도우미를 지원하지 않습니다.)

+0

OmniOS (Illumos 기반 OS)에 node.js를 설치하려면 다음을 수행하십시오. https://gist.github.com/dalssoft/5595688 –

3

@psanford 특별히 DTrace를 사용하여 문제를 포함하는 좋은 답변을 가지고, 하지만 개봉 문장에서 보면 과 같아 보이면 Node.js 앱을 추적 할 수 있으며 DTrace는이를 수행하는 방법 중 하나 일뿐입니다.

이 경우 node-inspectorv8-profiler을 조합하면 응용 프로그램에 원하는 인트로 스펙 션을 제공 할 수 있습니다. 그러나 노드 0.4.x에서 작동하는지 확신 할 수는 없지만 마지막으로 사용한 것은 0.4.10입니다.

1

오라클 DTrace 가용성 오라클 리눅스. 이 배포판을 다운로드 할 수 있습니다 here.