1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!
    Скрыть объявление

Улучшение Распределение нагрузки между ядрами процессора

Тема в разделе "1.1.86", создана пользователем yadzha, 6 авг 2013.

  1. yadzha

    yadzha A-Parser Pro License
    A-Parser Pro

    Регистрация:
    18 июн 2013
    Сообщения:
    68
    Симпатии:
    6
    Сабж. Не удобно запускать и управлять (и обновлять) 5-7 копями парсера с целью распределения нагрузки на сервер
     
  2. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.336
    Симпатии:
    1.791
    В какой задаче апарсер упирается в процессор?
     
  3. yadzha

    yadzha A-Parser Pro License
    A-Parser Pro

    Регистрация:
    18 июн 2013
    Сообщения:
    68
    Симпатии:
    6
    Постоянно упираюсь в процессор. Например, сегодня одновременно парсил майлы с вконтакте (50 потоков без прокси), сниппеты с Гугла (прокси 75 потоков) и ссылки на авито из Гугла (прокси 75 потоков). Задействовано было только 1 ядро из 8 и ядро загружено на 100%. Загрузка остальных ядер 0%. Из за перегрузки ядра, общая скорость парсинга меньше. При отключии парсинга сниппетов, загрузка ядра падает и скорость загрузки VK и Avito увеличивается почти в 2 раза.

    Загрузку процессора проверял утилитой htop. жесткий диск (iotop) не загружен, памяти свободной тоже достаточно
     
  4. yadzha

    yadzha A-Parser Pro License
    A-Parser Pro

    Регистрация:
    18 июн 2013
    Сообщения:
    68
    Симпатии:
    6
    Похоже причина загрузки процессора в том, что базы получаются большие, по несколько десятков и сотен мегов (от 1млн строк в каждом файле) и на удаление дублей тратится много процессорного времени
     
  5. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.336
    Симпатии:
    1.791
    да врятли, это очень быстрые операции, я думаю основная причина в неоптимизированных регулярных выражениях которые ты указываешь

    попробуй нагрузить ядро каким нибудь парсингом без своих регулярок
     
  6. yadzha

    yadzha A-Parser Pro License
    A-Parser Pro

    Регистрация:
    18 июн 2013
    Сообщения:
    68
    Симпатии:
    6
    Регулярки не причем. Загрузил сейчас задание - парсить все подряд сниппеты в зоне ru. Результат как всегда - ядро перегружено, скорость парсинга из за этого относительно небольшая. Задача ресурсоемкая, за 10мин напарсил ~500 мегов сниппетов.
    Проц - Intel Quad-Core Xeon E3-1230, 3.4 Ghz

    [​IMG][​IMG][​IMG]
     
  7. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.336
    Симпатии:
    1.791
    а покажи вывод обычного top

    и какой процессор?
     
  8. yadzha

    yadzha A-Parser Pro License
    A-Parser Pro

    Регистрация:
    18 июн 2013
    Сообщения:
    68
    Симпатии:
    6
    Проц - Intel Quad-Core Xeon E3-1230, 3.4 Ghz. До этого был Core i7-920 2.6Ghz, там тоже ядро перегружалось

    [​IMG]
     
  9. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.336
    Симпатии:
    1.791
    а зачем в задании пустой Parse custom result? можешь без него замерить?
    и какой стоит Unique level?
     
  10. yadzha

    yadzha A-Parser Pro License
    A-Parser Pro

    Регистрация:
    18 июн 2013
    Сообщения:
    68
    Симпатии:
    6
    Да точно, убрал Parse custom result, теперь 1 задание парсинга сниппетов на 300 потоках - загрузка ядра ~90%, в 3 раза увеличилась скорость. Unique level = Dynamic (без hash)

    Но это частный случай, я в основном использую Parse custom result c регулярками, по 5-10 одновременных заданий стоит в работе. В любом случае приходится распределять задания между несколькими копиями парсера.

    Регулярки использую такие:
    (([A-Za-z0-9_\.\-]{1,20})@([A-Za-z0-9\.\-]{1,20})\.([A-Za-z]{2,4}))
    Или конструкции в таком стиле - Контактное лицо:</div>(.*?)<
     
  11. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.336
    Симпатии:
    1.791
    Эта регулярка очень тяжелая т.к. не имеет опорных символов
     

Поделиться этой страницей