Утечка памяти Scrapy (параллелизм установлен на 3) - PullRequest
0 голосов
/ 30 марта 2019

Я не могу понять, почему мой scrapy паук потребляет так много памяти.

Я использую splash с scrapy, но top показывает, что это python3, который потребляет 60% или больше памяти, так что я полагаю, что это не splash, а сама скрапа.

Я недавно добавил splash.images_enabled = false в lua скрипт, но это не имеет смысла увеличивать потребление памяти.

Поэтому я пытаюсь отладить его, используя telnet.

enter image description here

enter image description here

Как видите, в ОЗУ практически ничего нет.

Знаете ли вы, где может быть проблема?

2019-03-29 22:01:55 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'scrapy_spider', 'CONCURRENT_REQUESTS': 6, 'CONCURRENT_REQUESTS_PER_DOMAIN': 3, 'CONCURRENT_REQUESTS_PER_IP': 3, 'COOKIES_ENABLED': False, 'DUPEFILTER_CLASS': 'scrapy_splash.SplashAwareDupeFilter', 'LOG_FILE': '/home/fs/sd/logs/scrapy.log', 'LOG_LEVEL': 'INFO', 'NEWSPIDER_MODULE': 'scrapy_spider.spiders', 'SPIDER_MODULES': ['scrapy_spider.spiders']}


class AutoScrapeSpider(scrapy.Spider):
    name = 'autoscrape_spider'

    wait = """
        function main(splash, args)
            splash.images_enabled = false
            splash:set_user_agent(args.ua)
            assert(splash:go(splash.args.url))

            local i=0
            local maxwait=20

            while not splash:select("#odds-data-table .table-container") do
                if i==maxwait then
                    break     --times out at maxwait secs
                end
                i=i+1
                splash:wait(1)      --each loop has duration 1sec
            end
            return { 
                html = splash:html(),
                }
        end
        """

1 Ответ

0 голосов
/ 31 марта 2019
  • Splash реализован в Python3, поэтому я предполагаю, что это вызывает проблему здесь
  • Вы можете попробовать перезапускать Splash время от времени, чтобы избежать использования слишком большого количества памяти (ср. https://splash.readthedocs.io/en/stable/faq.html#how-to-run-splash-in-production)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...