Разделы · Парсеры и сбор данных
Задача рабочая, сроки сжатые, и хочется решить один раз.
Чтобы вопрос был предметным, вот цифры.
Каталог на 400 тысяч адресов, память на машине 32 гигабайта. Проверял на двух версиях программы, поведение одинаковое. На маленьком объёме всё работает, разница начинается после ста тысяч.
Подскажите, где я ошибаюсь.
Добавлю то, что обычно вылезает на второй месяц работы.
Память ест не число потоков, а хранение всего собранного в памяти до конца прогона. Пишите результат на диск пачками, и потолок пропадёт.
$ ./sbor --potokov 120 --spisok chast-01.txt --proksi pool.txt обработано: 48 210 / 50 000 пустых ответов: 1 842
Хороший разбор, добавлю в закладки.
Начинал с того же, потом переделал.
Большие каталоги не надо гонять одним куском. Разбейте на части по пятьдесят тысяч, каждую с отдельным состоянием, и падение одной части перестанет ронять весь прогон.
$ ./sbor --potokov 120 --spisok chast-01.txt --proksi pool.txt обработано: 48 210 / 50 000 пустых ответов: 1 842
Тут легко перепутать два разных момента.
Перед большим прогоном всегда гоняю пробу на тысяче адресов. Три минуты времени, и сразу видно, где посыплется.
Потери записей чаще всего идут из-за коротких ответов, которые программа считает успешными. Заведите проверку на минимальный размер ответа и на наличие обязательного куска разметки.
Добавлю то, что обычно вылезает на второй месяц работы.
Большие каталоги не надо гонять одним куском. Разбейте на части по пятьдесят тысяч, каждую с отдельным состоянием, и падение одной части перестанет ронять весь прогон.
Потери записей чаще всего идут из-за коротких ответов, которые программа считает успешными. Заведите проверку на минимальный размер ответа и на наличие обязательного куска разметки.
Полгода назад ловил то же самое.
Большие каталоги не надо гонять одним куском. Разбейте на части по пятьдесят тысяч, каждую с отдельным состоянием, и падение одной части перестанет ронять весь прогон.
Хороший разбор, добавлю в закладки.
До этого работало? Что менялось перед тем, как сломалось?
Сколько адресов и какой темп при этом стоит?
Логи в помощь, без них это гадание.
Уточните пару моментов, иначе гадаем.
Проверял на трёх проектах подряд, картина устойчивая.
Скорость упирается не в программу, а в темп, который держит площадка. Ставить 300 потоков на 20 адресов бессмысленно, отказы съедят весь выигрыш.
Перед большим прогоном всегда гоняю пробу на тысяче адресов. Три минуты времени, и сразу видно, где посыплется.