最棒的表演

2024-05-15 12:38:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的专用服务器上使用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}$

Tags: 服务器truesettingscustomenabled性能requestsconcurrent
2条回答

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)

telnet localhost 6023

prefs()

实时引用

^{pr2}$

你每秒爬行3页。除非你的页面的响应时间很长,否则这就太低了。bloomfilter似乎是你将来可能会遇到的一个问题。现在你需要7天的时间来爬网2百万页(并使用154Mb的内存)。在

相关问题 更多 >