- Регистрация
- 10.12.2018
- Сообщения
- 1 022
- Благодарностей
- 1 424
- Баллы
- 113
Надеюсь, правильно сформулировал потребность.
Есть парсер, дергающий ссылки на объявления с максимальной скоростью 100-150К ссылок в час, в зависимости от наличия доступных/свежих.
Вторым парсером необходимо обрабатывать максимально оперативно эти все ссылки. Учитывая скорость обработки ссылки в районе 1,5-2 секунд, несложно высчитать, что достаточно выставить ему 1000 потоков и дело в шляпе.
Но когда скорость добычи ссылок снижается в ночное время до 3-5К, становится абсолютно бессмысленным гонять 1000 потоков.
Вот и стоит задача запускать необходимое число потоков, чтобы обеспечить оптимальное потребление ресурсов сервера, да и скорость парсинга выровнять для любого количества входных данных.
Я это вижу как-то так:
Скорость обработки 2 секунды - значит, за полчаса один поток обрабатывает 900 объявлений. Отнимем половину для страховки на опоздания ответа от сервера и прочие возможные задержки. Получим 400 объяв за полчаса.
Значит, при наличии 100000 объяв для обработки необходимо запускать 100000/400 = 250 потоков, а при 10000 всего 25.
При этом должно учитываться количество запущенных потоков. И потоки должны отрубаться при излишнем количестве.
Как это можно организовать - готов выслушивать ваши предложения.
Есть парсер, дергающий ссылки на объявления с максимальной скоростью 100-150К ссылок в час, в зависимости от наличия доступных/свежих.
Вторым парсером необходимо обрабатывать максимально оперативно эти все ссылки. Учитывая скорость обработки ссылки в районе 1,5-2 секунд, несложно высчитать, что достаточно выставить ему 1000 потоков и дело в шляпе.
Но когда скорость добычи ссылок снижается в ночное время до 3-5К, становится абсолютно бессмысленным гонять 1000 потоков.
Вот и стоит задача запускать необходимое число потоков, чтобы обеспечить оптимальное потребление ресурсов сервера, да и скорость парсинга выровнять для любого количества входных данных.
Я это вижу как-то так:
Скорость обработки 2 секунды - значит, за полчаса один поток обрабатывает 900 объявлений. Отнимем половину для страховки на опоздания ответа от сервера и прочие возможные задержки. Получим 400 объяв за полчаса.
Значит, при наличии 100000 объяв для обработки необходимо запускать 100000/400 = 250 потоков, а при 10000 всего 25.
При этом должно учитываться количество запущенных потоков. И потоки должны отрубаться при излишнем количестве.
Как это можно организовать - готов выслушивать ваши предложения.