我正在使用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的来源。