开多进程爬虫任务内存不会释放

ht

redis+workman 做爬虫服务,开多个进程抓取数据,程序内存不会释放一直增加!求解!

3236 6 0
6个回答

sm2010

目测你程序的问题

  • 暂无评论
walkor 打赏

你的程序问题,看看是不是有全局数组一直在添加元素又没删除

  • 暂无评论
ht

这是读取redis队列中的任务代码

[attach]787[/attach]

  • 暂无评论
walkor 打赏

assignTask方法是运行多次么?如果是不断运行assignTask,就不会不断new 很多个Worker实例,会导致内存不断增加。

  • 暂无评论
ht

这个方法是会一直调用的,而且开的是多个进程。那我每次使用完work对象然后unset掉可以解决这个问题吗!

  • 暂无评论
walkor 打赏

unset不会关闭进程,也不会销毁$worker实例

正确的做法应该是workerman提前启动一批进程监听某个端口,业务需要调用assignTask时,向这个端口发送请求,这些进程收到请求后处理。

  • ganguser 2017-09-26

    端口怎么用啊,有没有demo发个啊

年代过于久远,无法发表回答
×
🔝