Scrapy 在 1G 内存的环境下是不是无法发挥工作呢?

2017-06-19 12:12:40 +08:00
 linkbg

Scrapy 在 1G 内存的环境下是不是无法发挥工作呢?尝试了三次,在运行一段时间(一小时以上)之后就是遇到 OOM。 可能代码逻辑有问题?

# 从一个入口站点入手,获取全部的 a 标签。再然后循环。
for url in response.xpath('//a/@href').extract():
	# 存取 title 之类
    
    yield item
    yield scrapy.Request(url,callback=self.parse, dont_filter=True)

谢谢指导

2534 次点击
所在节点    Python
14 条回复
whwq2012
2017-06-19 12:19:48 +08:00
我在我的阿里云 1g 内存的服务器上跑过半个月都没有问题
linkbg
2017-06-19 12:28:29 +08:00
@whwq2012 可能我的姿势不对。求指教。
VicYu
2017-06-19 12:32:15 +08:00
报错看看
linkbg
2017-06-19 12:34:15 +08:00
@VicYu 没有错误。直接被 kill 了。/var/log/message 中记录 OOM kill
knightdf
2017-06-19 12:40:25 +08:00
@linkbg 检查自己的代码把,这个应该是你代码内存泄漏了
whwq2012
2017-06-19 12:55:49 +08:00
@linkbg 你都不贴出整个项目,我没出现过这个错误
linkbg
2017-06-19 13:07:46 +08:00
@whwq2012 不好意思,我看了一下,好像这代码也没什么保密价值。哈哈。
whwq2012
2017-06-19 13:15:22 +08:00
scrapy 的日志看了吗,没有的话就设置成 debug 级别的,再运行一次,期间你可以去 scrapy 的 github 项目,搜搜有没有 issue 出现过和你一样的问题。
linkbg
2017-06-19 13:23:47 +08:00
@whwq2012 谢谢啦,
日志方面除了在插入到数据库时会报唯一限制的错误,没有其他关于 scrapy 的报错,最后一次,我盯着它在我眼皮底下直接就被 kill 掉。
/var/log/message 中的记录
```
kernel: Out of memory: Kill process 2454 (scrapy) score 333 or sacrifice child
kernel: Killed process 2454 (scrapy) total-vm:999536kB, anon-rss:346860kB, file-rss:1176kB, shmem-rss:0kB
```
VicYu
2017-06-19 13:38:59 +08:00
@linkbg 能发一下内存监控之内吗?

遍历所有在需求 domain 里 a[href], generator 应该不小, 你换一下 PickleFifoDiskQueue 试试
VicYu
2017-06-19 13:40:17 +08:00
awanabe
2017-06-19 13:40:54 +08:00
用 yield 就是迭代器, 之前的对象都不会释放的。
linkbg
2017-06-19 13:48:29 +08:00
@VicYu 内存监控这块,我没有监控,我也是在他 kill 掉我才去看 log 的。我试一下您说的这个。谢谢
mansur
2017-06-19 13:52:37 +08:00
ps aux | grep python
运行一阵后看下有几个 py 进程

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/369507

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX