Scrapy蜘蛛内存泄漏

时间:2015-07-23 17:19:08

标签: python memory-leaks scrapy scrapyd

我的蜘蛛有严重的内存泄漏。运行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。

Objgraph for oldest request after some time of run

enter image description here

0 个答案:

没有答案