Node.js子进程变得“陷入困境”

时间:2014-08-28 17:12:48

标签: multithreading node.js memory-leaks cpu processor

我正在使用npm crawler包在Node.js中构建网络爬虫。我的程序现在创建了5个子进程,每个进程实例化一个新的Crawler,它抓取父进程提供的URL列表。

当它运行大约15-20分钟时,它会慢下来停止并且过程“停止”。 STATE命令输出的top列为所有孩子读取stuck。 [见下文]

我对top命令和提供的列知之甚少,但我想知道有没有办法通过查看输出来找出导致进程变慢的原因top我意识到可能是我的代码中有一个错误,但我想知道我应该在哪里开始调试:内存泄漏,缓存问题,没有足够的孩子,太多的孩子,等

以下是top

的整个输出
PID    COMMAND      %CPU      TIME     #TH    #WQ   #PORT #MREG MEM    RPRVT  PURG   CMPRS  VPRVT  VSIZE  PGRP  PPID  STATE    UID       FAULTS    COW    MSGSENT    MSGRECV    SYSBSD     SYSMACH
11615  node         2.0       17:16.43 8      0     42    2519  94M-   94M-   0B     1347M+ 1538M  4150M  11610 11610 stuck    541697072 14789409+ 218    168        21         6481040    63691
11614  node         2.0       16:57.66 8      0     42    2448  47M-   47M-   0B     1360M+ 1498M- 4123M  11610 11610 stuck    541697072 14956093+ 217    151        21         5707766    64937
11613  node         4.4       17:17.37 8      0     44    2415  100M+  100M+  0B     1292M- 1485M  4114M  11610 11610 sleeping 541697072 14896418+ 215    181        22         6881669+   66098+
11612  node         10.3      17:37.81 8      0     42    2478  24M+   24M+   0B     1400M- 1512M  4129M  11610 11610 stuck    541697072 14386703+ 215    171        21         7083645+   65551
11611  node         2.0       17:09.52 8      0     42    2424  68M-   68M-   0B     1321M+ 1483M  4111M  11610 11610 sleeping 541697072 14504735+ 220    168        21         6355162    63701
11610  node         0.0       00:04.63 8      0     42    208   4096B  0B     0B     126M   227M   3107M  11610 11446 sleeping 541697072 45184     410    52         21         36376      6939

以下是依赖项:

├── colors@0.6.2
├── crawler@0.2.6
├── log-symbols@1.0.0
├── robots@0.9.4
└── sitemapper@0.0.1

Sitemapper是我自己写的,可能是bug的来源。

0 个答案:

没有答案