2012-06-26 25 views
6

Tôi hiện đang lược tả ứng dụng node.js của mình.Tôi tìm thấy blog này: http://blog.nodejs.org/2012/04/25/profiling-node-js/ gợi ý rằng tôi nên sử dụng Dtrace. Tôi đã cài đặt dtrace trên ubuntu 12.04 sử dụng bước đưa ra ở đây: https://askubuntu.com/questions/60940/how-do-i-install-dtraceLập cấu hình Node.js bằng DTrace

Tuy nhiên khi tôi chạy lệnh này trong thiết bị đầu cuối của tôi trong khi ứng dụng nút của tôi đang chạy:

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

stacks.out vẫn trống trừ này: CPU ID CHỨC NĂNG: NAME 1 387695: tick-60s

Bất kỳ đề xuất nào có thể sai?

+0

Với node.js mới nhất trong Linux, bạn có thể xem Systemtap. Tôi không biết bao nhiêu được hỗ trợ. Đo lường GC => https://gist.github.com/bnoordhuis/4078925. Tôi đã không chơi với điều này được nêu ra nhưng trông đầy hứa hẹn/thú vị. – Alfred

Trả lời

7

Triển khai DTrace của Linux hiện còn rất trẻ và thiếu một số tính năng quan trọng (và không sẵn sàng để sử dụng sản xuất). Cụ thể là việc triển khai DTrace bạn đang sử dụng (Paul Fox's) đã không thực hiện được nhiều nếu có bất kỳ công việc nào để hỗ trợ truy tìm không gian người dùng. Vì vậy, bạn sẽ không thể làm điều này dưới Linux (ngay bây giờ).

Nếu bạn muốn thực hiện việc này, bạn sẽ cần phải sử dụng hệ điều hành có triển khai DTrace hoàn chỉnh hơn. Bạn đặt cược tốt nhất là sử dụng một trong các dẫn xuất Illumos (chẳng hạn như OmniOS, SmartOS hoặc OpenIndiana).

Bạn nên đọc lại phần 'điều kiện tiên quyết' của the article you linked to. Nó nói rằng bạn cũng cần phải chắc chắn rằng bạn sử dụng 32bit NodeJS với hỗ trợ DTrace bật lúc biên dịch.

(Mac OS X không có một thực hiện DTrace tốt, nhưng theo the article nó không hỗ trợ những người giúp đỡ ustack đó là cần thiết cho ví dụ này.)

+0

Để cài đặt node.js trên OmniOS (Hệ điều hành dựa trên Illumos): https://gist.github.com/dalssoft/5595688 –

3

@psanford có một câu trả lời tốt đặc biệt liên quan đến các vấn đề của bạn với DTrace, nhưng từ câu mở đầu của bạn, nó trông giống như những gì bạn muốn là để có thể theo dõi ứng dụng Node.js của bạn, và DTrace chỉ là một ví dụ về cách làm như vậy.

Trong trường hợp đó, kết hợp node-inspectorv8-profiler sẽ cung cấp cho bạn nội dung mong muốn trong ứng dụng của bạn. Tôi không chắc chắn nếu nó hoạt động với Node 0.6.x, tuy nhiên, kể từ lần cuối cùng tôi sử dụng nó là với 0.4.10.

1

Oracle announced Tính khả dụng của DTrace trên Oracle Linux. Bạn có thể tải xuống bản phân phối này here.

Các vấn đề liên quan