如何提高scrapy的下载速度?
我正在使用scrapy从许多不同的域并行下载页面。我有成千上万的页面可供下载,因此性能非常重要。
不幸的是,当我描述了scrapy的速度时,每秒只能得到几页。确实,平均每秒约2页。以前,我已经编写了自己的多线程spider程序,以每秒执行数百页的工作-我想肯定,scrapy的使用Twisted等等可以实现类似的魔术。
我如何加快刮y速度?我真的很喜欢这个框架,但是这个性能问题对我来说可能是一个难题。
这是settings.py文件的相关部分。我错过了一些重要的设置吗?
LOG_ENABLED = FalseCONCURRENT_REQUESTS = 100
CONCURRENT_REQUESTS_PER_IP = 8
一些参数:
- 使用scrapy版本0.14
- 该项目部署在EC2大型实例上,因此应该有足够的内存,CPU和带宽来使用。
- 我正在计划使用JSON协议进行爬网,在任何给定时间使爬网程序充满数十个并发爬网。
- 就像我刚开始所说的那样,我正在从许多站点下载页面,因此不必担心远程服务器性能和CONCURRENT_REQUESTS_PER_IP。
- 目前,我很少进行后期处理。没有xpath; 没有正则表达式;我只是为每个页面保存网址和一些基本统计信息。(一旦我解决了基本的性能问题,这种情况将在以后改变。)
回答:
我过去曾遇到过这个问题……大部分情况是我用的老技巧解决的。
执行本地缓存DNS。
通常,当你拥有如此高的CPU使用率同时访问远程站点时,这是因为scrapy试图解析URL。
并且,请记住将主机(/etc/resolv.conf)上的dns设置更改为本地缓存DNS服务器。
首先,它会很慢,但是一旦它开始缓存,它就会更有效地解决你将看到的巨大改进。
希望这对你的问题有所帮助!
以上是 如何提高scrapy的下载速度? 的全部内容, 来源链接: utcz.com/qa/426780.html