Подтвердить что ты не робот

Parallelism/Проблемы с производительностью с помощью Scrapyd и одиночного паука

Контекст

Я запускаю scrapyd 1.1 + scrapy 0.24.6 с одним "паутинным гибридным" пауком, который сканирует по многим доменам в соответствии с параметрами. Машина разработки, на которой размещен экземпляр scrapyd (s?), Представляет собой OSX Yosemite с 4 ядрами, и это моя текущая конфигурация:

[scrapyd]
max_proc_per_cpu = 75
debug = on

Выход при запуске scrapyd:

2015-06-05 13:38:10-0500 [-] Log opened.
2015-06-05 13:38:10-0500 [-] twistd 15.0.0 (/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python 2.7.9) starting up.
2015-06-05 13:38:10-0500 [-] reactor class: twisted.internet.selectreactor.SelectReactor.
2015-06-05 13:38:10-0500 [-] Site starting on 6800
2015-06-05 13:38:10-0500 [-] Starting factory <twisted.web.server.Site instance at 0x104b91f38>
2015-06-05 13:38:10-0500 [Launcher] Scrapyd 1.0.1 started: max_proc=300, runner='scrapyd.runner'

EDIT:

Число ядер:

python -c 'import multiprocessing; print(multiprocessing.cpu_count())' 
4

Проблема

Я хотел бы, чтобы установка обрабатывала 300 заданий одновременно для одного паука, но scrapyd обрабатывает от 1 до 4 за раз, независимо от того, сколько заданий ожидает:

Scrapy console with jobs

EDIT:

Использование ЦП не является ошеломляющим:

CPU Usage for OSX

ИСПЫТАНИЕ НА UBUNTU

Я также тестировал этот сценарий на виртуальной машине Ubuntu 14.04, результаты более или менее одинаковы: во время выполнения было достигнуто не более 5 заданий, при этом не было подавляющего потребления ЦП, более или менее того же времени для выполнения столько же задач.

4b9b3361

Ответ 1

Моя проблема заключалась в том, что мои задания длились на какое-то время меньше, чем значение POLL_INTERVAL, равное 5 секундам, поэтому до сих конец предыдущего. Изменение этих параметров на значение ниже средней продолжительности задания искателя поможет scrapyd опросить больше заданий для выполнения.

Ответ 2

Журналы показывают, что разрешено до 300 процессов. Предел, следовательно, далее вверх по цепочке. Мое первоначальное предложение состояло в том, что это была сериализация в вашем проекте, как описано Запуск нескольких пауков, использующих scrapyd.

Последующее исследование показало, что ограничивающим фактором был фактически интервал опроса.