博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
aws上部署scrapy,出现 Out of Memory,内存溢出
阅读量:5959 次
发布时间:2019-06-19

本文共 731 字,大约阅读时间需要 2 分钟。

来源:http://www.aisir.cn/2017/07/11/aws%E4%B8%8A%E9%83%A8%E7%BD%B2scrapy%E5%87%BA%E7%8E%B0-out-of-memory%EF%BC%8C%E5%86%85%E5%AD%98%E6%BA%A2%E5%87%BA/

项目部署在亚马逊服务器上,每小时爬去广告数据,运行一段时间后,内存溢出,贴图为证

 

这几天跟着小伙伴一起做项目,碰到不少平时碰不到的技术问题,真是很好玩的一件事。比如Scrapy这个爬虫框架的的内存泄露问题就是一个很让人头疼的问题。

历来OOM(OOM - Out of Memory,内存溢出)问题都是项目里最棘手的问题,这种问题debug的难度很大,原因在于问题不太好定位。因为OOM的成因往往比较复杂,不合理的对象创建,数据结构使用的不合理性,分布式架构中各系统的配合不好等情况,都有可能出现这个问题。

而爬虫这个任务,涉及网站各个页面的遍历,通常会在网站抓去期间产生大量的HTTP Request,而Request的处理往往是通过任务队列来处理的。由于不是网站的所有的页面都要抓去,但我们几乎需要遍历大部分的页面,再考虑并发的情况,爬虫任务开始后,往往会有大量的pending request进入队列。而这些队列,框架对其最常见的处理方式是放在内存中,因此,当要抓去的页面层次位于网站的较深层时,这个队列的内存占用到了任务的中后期会变得非常可观。

 

我的解决方案:

运行单次抓取任务,发现内存占用近 1G

1、加大实例内存

2、减小插入s3的thread并发数目

转载于:https://www.cnblogs.com/aisir/p/7183231.html

你可能感兴趣的文章
生成树
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
用XSLT和XML改进Struts
查看>>
Beta冲刺——day6
查看>>
Comet OJ - Contest #3 题解
查看>>
[网络流24题-9]试题库问题
查看>>
jquery选择器详解
查看>>
C# 保留2位小数
查看>>
使用xshell远程连接Linux
查看>>
杭电ACM1007
查看>>
faster-RCNN台标检测
查看>>
Unix环境高级编程 centos中配置apue编译环境
查看>>
运算符
查看>>
数据结构之各排序算法
查看>>
网页分帧操作<frameset>,<iframe>标签
查看>>
Vue生产环境部署
查看>>
酒店之王
查看>>
html5判断用户摇晃了手机(转)
查看>>
VS下Qt4.8.4安装
查看>>
Linux df命令
查看>>