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