哪些诊断工具可用于Node.js应用程序? [英] What diagnostic tools are available for Node.js applications?

查看:95
本文介绍了哪些诊断工具可用于Node.js应用程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有很多工具,哪些诊断工具可以很好地解决node.js应用程序的诊断内存泄漏问题?

There are many tools out there, which diagnostics tools are good for diagnostic memory leak issues for node.js applications?

推荐答案

是的,IDDE不仅是功能强大的工具,可用于检测内存泄漏,还可用于确定Node.js异常行为的各种问题,包括崩溃和挂起.

Yes, IDDE is a powerful tool not only for memory leak detection, but for a wide variety of problem determination of Node.js misbehaviors, including crashes and hangs.

这里是概述,安装和新信息的链接: https ://www.ibm.com/developerworks/java/jdk/tools/idde

Here is the link for overview, installation, and what is new information: https://www.ibm.com/developerworks/java/jdk/tools/idde

  1. 我将从nodeoverview命令开始.请注意,由于某些原因,每个命令都以bang(!)开头,并且每个命令都以控件(ctrl + enter)输入.

!nodeoverview {

!nodeoverview {

已使用的内存分配器:981 MB,可用:482 MB GC计数:144

Memory allocator, used: 981 MB, available: 482 MB GC Count: 144

这显示了堆的占用情况.

This shows up the occupancy of the heap.

  1. 然后,使用jsmeminfo找出堆中的主要驻留对象.

  1. Then, use jsmeminfo to figure out the predominent resident objects in the heap.

!jsmeminfo {

!jsmeminfo {

已使用的内存分配器:981 MB,可用:482 MB 堆对象总数:21559924

Memory allocator, used: 981 MB, available: 482 MB Total Heap Objects: 21559924

最多5个堆对象类型大小(字节)更多信息

Largest 5 heap objects Type Size (bytes) More information

0x00000000de06d319 FIXED_ARRAY_TYPE 131112!array 0x00000000de06d319 0x00000000de0ac6d9 FIXED_ARRAY_TYPE 98360!数组0x00000000de0ac6d9 0x00000000e90e2f09 ASCII_STRING_TYPE 48152!string 0x00000000e90e2f09 0x00000000e9035099 ASCII_STRING_TYPE 48088!字符串0x00000000e9035099 0x00000000e9004101 ASCII_STRING_TYPE 40936!string 0x00000000e9004101

0x00000000de06d319 FIXED_ARRAY_TYPE 131112 !array 0x00000000de06d319 0x00000000de0ac6d9 FIXED_ARRAY_TYPE 98360 !array 0x00000000de0ac6d9 0x00000000e90e2f09 ASCII_STRING_TYPE 48152 !string 0x00000000e90e2f09 0x00000000e9035099 ASCII_STRING_TYPE 48088 !string 0x00000000e9035099 0x00000000e9004101 ASCII_STRING_TYPE 40936 !string 0x00000000e9004101

最常见的5种对象类型频率

Most Frequent 5 object types Frequency

JS_OBJECT_TYPE 15371393 FIXED_ARRAY_TYPE 6175379 ASCII_INTERNALIZED_STRING_TYPE 3476 BYTE_ARRAY_TYPE 1572 JS_FUNCTION_TYPE 1434

JS_OBJECT_TYPE 15371393 FIXED_ARRAY_TYPE 6175379 ASCII_INTERNALIZED_STRING_TYPE 3476 BYTE_ARRAY_TYPE 1572 JS_FUNCTION_TYPE 1434

}

根据此信息查看应用程序,并查看它们是否有理由占用内存.

Review the application based on this information and see they holding up the memory as shown is justified or not.

如果要进一步分解"对象以查看内容,请使用对象扩展命令,例如!jsobject或!array:

If you want to 'dissect' the objects further to see the content, use object expansion commands such as !jsobject or !array:

!array 0x00000000de06d319 {

!array 0x00000000de06d319 {

数组类型:FIXED_ARRAY_TYPE 伦:16387 仅显示前100个元素 0:0xd9400000000(SMI) 1:0x3fe00000000(SMI) 2:0x400000000000(SMI) 3:0x9a1103d1(ASCII_INTERNALIZED_STRING_TYPE:!print 0x000000009A1103D1) 4:0x9a1042a9(ASCII_INTERNALIZED_STRING_TYPE:!print 0x000000009A1042A9) ... }

Array type : FIXED_ARRAY_TYPE Len : 16387 Showing first 100 elements only 0 : 0xd9400000000 (SMI) 1 : 0x3fe00000000 (SMI) 2 : 0x400000000000 (SMI) 3 : 0x9a1103d1 (ASCII_INTERNALIZED_STRING_TYPE : !print 0x000000009A1103D1 ) 4 : 0x9a1042a9 (ASCII_INTERNALIZED_STRING_TYPE : !print 0x000000009A1042A9 ) ... }

如果要基于对象的内部类型将整个堆分离"为多个部分,请使用jsgroupobjects.当您以不同的时间间隔进行多个转储,并且想要比较哪些对象随时间增长时,此功能将更加有用.

If you want to 'segregate' the entire heap into sections based on object's internal types, user jsgroupobjects. This is more useful when you have multiple dumps taken at different time intervals, and want to compare which objects grew over time.

!jsgroupobjects {

!jsgroupobjects {

代表对象地址对象类型数字对象构造方法数字属性属性

Representative Object Address Object Type Num Objects Constructor Num Properties Properties

!jsobject 0x00000000c8244fd1 JS_OBJECT_TYPE 6133503对象0
!jsobject 0x00000000c8004161 JS_OBJECT_TYPE 6133499数据库0
!jsobject 0x00000000c8004101 JS_OBJECT_TYPE 3066750 MyRecord 0
!jsobject 0x00000000c869b111 JS_OBJECT_TYPE 37302对象0
!jsobject 0x00000000de05b959 JS_FUNCTION_TYPE 542 0
!jsobject 0x00000000de04bcc1 JS_FUNCTION_TYPE 267 0
!jsobject 0x00000000de04aa09 JS_FUNCTION_TYPE 251 0
!jsobject 0x00000000de04a911 JS_FUNCTION_TYPE 227 0
!jsobject 0x00000000de0a48c9 JS_ARRAY_TYPE 190数组0
!jsobject 0x00000000de04a7e9 JS_FUNCTION_TYPE 102 0
!jsobject 0x00000000de04e379 JS_ARRAY_TYPE 34数组0
!jsobject 0x00000000de050db1 JS_OBJECT_TYPE 30对象0
!jsobject 0x00000000c2938151 JS_REGEXP_TYPE 18 RegExp 0
!jsobject 0x00000000c2955a11 JS_OBJECT_TYPE 15 NativeModule 0
!jsobject 0x00000000c2944519 JS_OBJECT_TYPE 11对象0
!jsobject 0x00003abc617bee71 JS_OBJECT_TYPE 102 CallSite 3接收器,很有趣,位置

!jsobject 0x00000000c8244fd1 JS_OBJECT_TYPE 6133503 Object 0
!jsobject 0x00000000c8004161 JS_OBJECT_TYPE 6133499 Database 0
!jsobject 0x00000000c8004101 JS_OBJECT_TYPE 3066750 MyRecord 0
!jsobject 0x00000000c869b111 JS_OBJECT_TYPE 37302 Object 0
!jsobject 0x00000000de05b959 JS_FUNCTION_TYPE 542 0
!jsobject 0x00000000de04bcc1 JS_FUNCTION_TYPE 267 0
!jsobject 0x00000000de04aa09 JS_FUNCTION_TYPE 251 0
!jsobject 0x00000000de04a911 JS_FUNCTION_TYPE 227 0
!jsobject 0x00000000de0a48c9 JS_ARRAY_TYPE 190 Array 0
!jsobject 0x00000000de04a7e9 JS_FUNCTION_TYPE 102 0
!jsobject 0x00000000de04e379 JS_ARRAY_TYPE 34 Array 0
!jsobject 0x00000000de050db1 JS_OBJECT_TYPE 30 Object 0
!jsobject 0x00000000c2938151 JS_REGEXP_TYPE 18 RegExp 0
!jsobject 0x00000000c2955a11 JS_OBJECT_TYPE 15 NativeModule 0
!jsobject 0x00000000c2944519 JS_OBJECT_TYPE 11 Object 0
!jsobject 0x00003abc617bee71 JS_OBJECT_TYPE 102 CallSite 3 receiver, fun, pos

如果要检查单个对象,请在对象地址上执行jsobject.

If you want to examine a single object, do jsobject on the object address.

!jsobject 0x00003abc617bee71 {

!jsobject 0x00003abc617bee71 {

对象具有快速属性 描述符数量:3

Object has fast properties Number of descriptors : 3

名称值更多信息

接收器0x0000251abe506c91
乐趣0x00003abc617bb241 pos 0x00001dfd00000000 SMI = 0x1dfd

receiver 0x0000251abe506c91
fun 0x00003abc617bb241 pos 0x00001dfd00000000 SMI = 0x1dfd

}

这篇关于哪些诊断工具可用于Node.js应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆