Что я делаю не так? Парсинг большого сайта

Dp76

Client
Регистрация
24.01.2019
Сообщения
104
Благодарностей
16
Баллы
18
1. Имеем большой сайт страниц этак на 20млн, список страниц как таковых, нет, но есть каталог страниц, с которого может быть ссылок 20-100 на сами товары, которые нас интересуют.

2. Сайт за ClaudFlare, использую прокси от awmproxy (не реклама)
Список проксей подгружается на сервер каждые 15 минут, из него убираются те, которые уже не подходят (просят ввести капчу) и загружаются в шаблон в виде списка. Размер файла примерно 800кб
Шаблон забирает первую проксю из списка, если она нерабочая складывает ее в другой список, который тоже привязан к файлу.

3. Если все ок, и прокся рабочая - то мы получаем страницу каталога сайта,
это спискок, к которому привязан файл в котором лежат URLs каталога, этот файл размером примерно 5мб
Загружаем страницу каталога, находим через XPath ссылки, складываем их в список, уникализируем его.

4. Далее уже работаем с нужными нам ссылками товаров. Специфика такая, что в каталоге могут быть ссылки на товары, которые уже встречались на других страницах каталога, и дабы не парсить страницы по несколько раз мы организовали проверку таким образом: каждый урл имеет свой идентификатор (в урл есть часть ITEM_455534343646346)
число уникальное, и, на основе этого идентификатора, если мы получили данный файл с товаром, создаем в каталоге res_empty файл аля c:\res_empty\4\5\5\3\4343646346.txt
(сейчас в папке порядка 10млн файлов скопилось)
И в дальнейшем уже смотрим, если на новой страничке каталога мы имеем страницу ITEM_455534343646346 - то проверяем существование данного файла - если его нет, то страница парсится и складывается два файла, один с контентом, второй пустой.

Вот так вот вкратце.
Сервер у нас довольно мощный: 4х E5-4650 @ 2.70 Mhz (32 ядра), памяти 128GB, SSD винт на 500GB
Стоит серверная Windows Server 2016 Standard

НО
Как только я запускаю в 100 потоков парсер - сервер превращается в черепаху, просто невозможно окошко с проводником перетащить, я уже не говорю чтобы Project Maker открыть (он может открываться до 5 минут). Task Manager может секунд 20 показывать not responding

При этом Task Manager показывает загрузку проца на 6-10%, памяти на 20-25% (со временем использование памяти растет)

Screen Shot 2019-03-03 at 11.49.09 PM.png



Что по софту - Zennoposter 5.27, 5.28, 5.28 Chrome - результат одинаков.
В настройках я устанавливаю Максимальное кол-во потоков - 250
Кол-во потоков в одном процессе - 1
Памяти каждому инстансу выделается по максимуму, 1гб.

Screen Shot 2019-03-03 at 11.52.24 PM.png


В самом шаблоне указано, чтобы браузер не отображал содержимое, запускался в отдельном инстансе,
политики контента настроены по минимуму, чтобы только контент страницы получать, настроен так же браузер таким образом, чтобы к проксе было максимум 4 конекта с одного шаблона, ибо такая политика у awmproxy.

Скажите, что-то можно улучшить, работать на этом тазике одновременно с парсером - невозможно.
Запустить парсинг еще какого-то сайта одновременно - это значит вообще потерять контроль над машиной.

Для тех, кто хочет помочь и думает что проблема в шаблоне - могу скинуть шаблон в личку...
Шаблон писался впервые, так что думаю мог сам что-то накосячить, вот и прошу помощи знающих.

У меня есть подозрение на дисковые операции, с этими всеми проверками на существование, в сто потоков, с другой стороны SDD - вроде как не должно быть такого, знатоки откликнитесь. Буду очень признателен, вплоть до $$
 

Вложения

Последнее редактирование:

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
Настройки инстансов не совсем корректные, все таймауты на минимуме, так у вас потоки не будут нормально отрабатывать. Поставьте как на скринах.
Таймауты_new.png
Кол_во заданий до перезагрузки.png
 
  • Спасибо
Реакции: Dp76

Dp76

Client
Регистрация
24.01.2019
Сообщения
104
Благодарностей
16
Баллы
18
Спасибо, сейчас все буду пробовать, но хочу уточнить - инстанс, это изолированный процесс, который запускается исключительно в начале процесса парсинга?
Тоесть это именно в начале всего процесса или же эти настройки влияют на работу уже в процессе самого парсинга?
Дело в том, что у меня сам шаблон настроен так, что он запускается и работает все время, без завершения. Комбайн.
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 453
Благодарностей
5 913
Баллы
113
Спасибо, сейчас все буду пробовать, но хочу уточнить - инстанс, это изолированный процесс, который запускается исключительно в начале процесса парсинга?
Тоесть это именно в начале всего процесса или же эти настройки влияют на работу уже в процессе самого парсинга?
Дело в том, что у меня сам шаблон настроен так, что он запускается и работает все время, без завершения. Комбайн.
Надо еще перезагрузку инстанса делать, через определенное кол-во циклов.
 
  • Спасибо
Реакции: Dp76

Dp76

Client
Регистрация
24.01.2019
Сообщения
104
Благодарностей
16
Баллы
18
Надо еще перезагрузку инстанса делать, через определенное кол-во циклов.
Понял, этот момент, но вопрос в тормозах не на старте процессов, а именно уже в самой работе, сейчас попробую сделать то что Вы описали выше, отпишусь позже обязательно
 

Dp76

Client
Регистрация
24.01.2019
Сообщения
104
Благодарностей
16
Баллы
18
Значит рассказываю.
Откатился я на версию 5.26.0
Вернул браузер FFx64
В шаблонах убрал проверку "существует ли запрашиваемый на сайте файл в системе" (очень грешу на это место, т.к. файлов много довольно)
Сделал паузу в шаблоне после закачивания страницы 10 секунд.

Сейчас на выходных оставлял систему - работала стабильно, без утечек памяти и проседаний по скорости в 100 потоков.
Сегодня добавлял другие проекты (+80 потоков), и работал в PM - все довольно терпимо по скоростям
Ну и настройки инстанса пришлось пересмотреть как советовали выше
Может кому пригодится...
 
Последнее редактирование:
  • Спасибо
Реакции: Zvezdochet

Dp76

Client
Регистрация
24.01.2019
Сообщения
104
Благодарностей
16
Баллы
18
Короче, рассказываю... Решил я проблему.
На скрине, где Task Manager - видно, что скорость процессора 1.38Mhz при заявленных 2.7
Поменял в BIOS режим работы процессора на Performance - теперь все летает даже на 250 потоках.
Может кому пригодиться.
 
  • Спасибо
Реакции: Astraport и Sergodjan

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

Dp76

Client
Регистрация
24.01.2019
Сообщения
104
Благодарностей
16
Баллы
18
А можно залезть в БИОС на виртуальном сервере?
Не в курсе. У нас не виртуальный сервер.

Что за режим, можно скрин?
Screen Shot 2019-04-11 at 8.59.03 AM.png

Вот что-то типа такой картинки, у нас она немного другая, но поставили Maximum Performance и все закрутилось.
 

Supergrok

Client
Регистрация
05.03.2019
Сообщения
171
Благодарностей
156
Баллы
43
А сервер сами собрали или готовая сборка покупалась, если сами то компоненты напишите, тоже себе такую дурь хочется.
 

Dp76

Client
Регистрация
24.01.2019
Сообщения
104
Благодарностей
16
Баллы
18
А сервер сами собрали или готовая сборка покупалась, если сами то компоненты напишите, тоже себе такую дурь хочется.
Сервер покупной, б/у. Встал он примерно в $2300
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)