我的蜘蛛有严重的内存泄漏。运行15分钟后,它的内存5gb和scrapy告诉(使用prefs())有900k请求对象,那就是全部。这么多生活请求对象的原因是什么?请求只会上升并且不会下降。所有其他对象都接近于零。
我的蜘蛛看起来像这样:
class ExternalLinkSpider(CrawlSpider):
name = 'external_link_spider'
allowed_domains = ['']
start_urls = ['']
rules = (Rule(LxmlLinkExtractor(allow=()), callback='parse_obj', follow=True),)
def parse_obj(self, response):
if not isinstance(response, HtmlResponse):
return
for link in LxmlLinkExtractor(allow=(), deny=self.allowed_domains).extract_links(response):
if not link.nofollow:
yield LinkCrawlItem(domain=link.url)
这里输出prefs()
HtmlResponse 2 oldest: 0s ago
ExternalLinkSpider 1 oldest: 3285s ago
LinkCrawlItem 2 oldest: 0s ago
Request 1663405 oldest: 3284s ago
在一些网站上,100k页面的内存可以达到40gb标记(例如在victorinox.com上,在100k页面标记处达到35gb内存)。在其他方面则要小得多。
UPD。