我在我的专用服务器上使用Scrapy,我想知道如何为我的爬虫获得最好的性能。在
以下是我的自定义设置:
custom_settings = {
'RETRY_ENABLED': True,
'DEPTH_LIMIT' : 0,
'DEPTH_PRIORITY' : 1,
'LOG_ENABLED' : False,
'CONCURRENT_REQUESTS_PER_DOMAIN' : 32,
'CONCURRENT_REQUESTS' : 64,
}
我实际上爬了200个链接/分钟。在
服务器:
^{pr2}$
1)使用
Scrapyd
运行蜘蛛2)scrapy中用于过滤访问的url的默认重复过滤器使用url指纹列表–基本上sha1散列40个字符,在python2.7中是77字节长。假设你必须抓取一个有2M页面的站点,那么你的重复过滤器列表可能会增长到2M*77b=154Mb每个爬虫程序。为了能够同时刮取300个这样的域,您需要300*154Mb=42G内存。幸运的是还有另一种方法–布卢姆过滤器。在
3)在生产中,我使用Scrapyd和Scrapy spider在分布式环境下运行
4)IMHO,我建议在scrapyd实例中使用更小的商品机器,并运行spider,而不是使用大型机器。在
5)分布式crawlers-我没有亲自使用过它。
6)使用scray Debug查找内存管理(日志:2015-07-20 20 20:32:11-0400[scray]Debug:Telnet控制台监听127.0.0.1:6023)
实时引用
^{pr2}$你每秒爬行3页。除非你的页面的响应时间很长,否则这就太低了。bloomfilter似乎是你将来可能会遇到的一个问题。现在你需要7天的时间来爬网2百万页(并使用154Mb的内存)。在
相关问题 更多 >
编程相关推荐