Инструменты пользователя

Инструменты сайта


Боковая панель

Перевод этой страницы:

ru:project-optimization

Эффективное использование ресурсов при работе с ZennoPoster

ZennoPoster - многопоточная программа и в каждом потоке обрабатывает много информации, требуя при этом значительные ресурсы компьютера. Эта статья поможет вам настроить программу под ваш компьютер, позволив использовать его ресурсы максимально эффективно.

Время пользователя

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

Оперативная память

Каждый поток в ZennoPoster представляет собой изолированный браузер со своими куками (около 13 видов), кэшем, прокси, юзерагентом и всеми другими данными, которые нужны для полной эмуляции пользователя.
Благодаря технологии размещения нескольких потоков в одном процессе, каждый поток требует в три раза меньше служебной (необходимой для обслуживания потока) оперативной памяти по сравнению с предыдущими версиями ZennoPoster и конкурентными программами. При расчете кол-ва оперативной памяти, необходимой для нормальной работы программы, нужно учитывать несколько факторов:

  1. Сайт, с которым вы работаете. Все сайты очень разные и отличаются потреблением оперативной памяти иногда на порядок. Таким образом, автоматизация одного сайта может работать в 100 потоков, а другого в 20 на одной и той же машине.
    Старайтесь отключать Flash, картинки и другие ресурсы, если они не нужны для работы с сайтом.

  2. Файлы. Файлы для ускорения работы хранятся в оперативной памяти (иначе будут проблемы с доступом к жесткому диску). Если вы для каждого потока используете свою копию файла (так происходит при использовании списков и таблиц без синхронизации с файлом) то, соответственно, каждый поток требует дополнительную оперативную память для хранения этого файла.
    Учитывайте, что таблицы в оперативной памяти занимают намного больше места чем исходный файл на жестком диске. Списки не такие требовательные как таблицы, тем не менее, тоже в оперативной памяти увеличиваются.
    Например, в оперативной памяти таблица на основе файла CSV в 10 MB в 100 потоков без синхронизации с файлом, может занять 5 GB
    Старайтесь не использовать списки и таблицы в режиме «без синхронизации» с файлом без необходимости.

  3. См пункт (2) в разделе «Процессор».

  4. Поиск по скриншоту. Эта фича тратит много оперативной памяти. Но очень полезна :)

Процессор

Каждый поток в ZennoPoster строит DOM модель, рендерит картинку, выполняет JS, обрабатывает события, обрабатывает анимацию и т.д. все это требует ресурсов процессора. Также процессор нагружается при периодической перезагрузке инстансов. Есть несколько способов экономии процессора:

  1. Отключение обработки ненужных элементов: флеш, картинки, скрипты и все что не нужно. Обратите внимание, если сайт с хорошей защитой, то это может повлиять на бан аккаунтов. Т.е. регистрация пройдет, но созданный аккаунт вызовет подозрения и в дальнейшем может быть забанен.

  2. В настройках программы есть возможность регулирования кол-ва потоков на одной базе. Увеличив этот параметр, вы немного экономите память и процессор, но появляются дополнительные задержки при эмуляции мыши и клавиатуры. Про эмуляцию читайте дальше.

  3. IntelliSearch и эмуляция. IntelliSearch увеличивает расход ресурсов процессора (в 2-3 раза), но помогает быстрее создавать проекты. Использовать его или нет, решайте сами. Эмуляция мыши и клавиатуры тоже немного увеличивает расход процессора и создает эффект, описанный в (2). Но иногда без нее просто нельзя создать аккаунт. Также эмуляция при регистрации аккаунта понижает вероятность бана аккаунта в будущем при дальнейшем его использовании.

  4. Программное распознавание капчи при использовании модулей из CapMonster тоже расходует процессор. Сколько времени одного ядра процессора нужно для распознавания каптчи написано в CapMonster при тестировании модуля. На самом деле, даже если вы тратите 10 секунд ядра процессора (хотя такого не бывает, обычно это меньше четверти секунды) на распознавание каптчи, это все равно дешевле, чем отправлять капчу в сервисы ручного распознавания.

  5. Поиск по скриншоту тратит и ресурсы процессора тоже. Но все равно остается очень полезной фичей :)

Время потока

Обратите внимание на этот параметр. Во время распознавания капчи в сервисах ручного распознавания происходит простой проекта около 15 секунд (пока работники сервисов распознают вашу капчу).
За это время процессор практически не работает для этого потока.
Благодаря этому (если в проекте есть такое действие) общее кол-во потоков, которое можно запустить на одной машине резко увеличивается. Т.е. вы можете запустить 30 потоков, на которых ваш проект все время открывает web страницы без распознавания каптч (обычный парсер, например). И это займет все ресурсы процессора.
Или 150 потоков с проектом (регистратор аккауната), в котором есть распознаванием капчи через сервисы. И это займет всю оперативную память.
Аналогично с подтверждением регистрации по email, когда поток ждет письмо. В этом случае тоже происходит простой потока.

Интернет канал

Здесь все просто. Вы открываете web страницу - при этом она скачивается с сервера и все картинки, flash, скрипты и т.д., которые есть на ней. Если вы чистите кэш, то все скачивается постоянно при работе проекта, если нет - то потребление этого ресурса сильно понижается.
Обычно кэш нужно чистить, без очистки кэша web ресурс поймет, что вы уже заходили на него, даже если вы используете proxy.
Интернет канал может быть широким, тем не менее, ограничивать работу программы из-за малого кол-ва разрешенных открытых соединений, о которых читайте далее.

Открытые соединения

Что это такое можно узнать у гугла, а сколько таких соединений поддерживает ваша сеть можно узнать у проксичекера. В нем есть тест канала и его онлайн мониторинг. На поток с установленной прокси нужно 2 соединения. Без прокси - до 32. Обычно соединения урезаны домашними провайдерами, но чаще модемами, обычно доступно около 300, дальше модем просто перестает отвечать на запросы, в то время как выделенные сервера поддерживают тысячи (15000 на серверах от hetzner.de) Учитывайте, что проксичекер использует соединения. От 1 соединение на поток проксичекера.

В итоге

Каждый проект может требовать разное кол-во ресурсов. Один может использовать 15 MB оперативной памяти на поток, другой 1 GB, аналогично с ресурсами процессора - все зависит от задач.
При создании программы мы в первую очередь экономили ваше время, все остальное легко настраивается и масштабируется.

Настройка кол-ва потоков по умолчанию

В настройках ZennoPoster можно поставить максимальное кол-во потоков, которые могут будут одновременно запущены. Есть рекомендуемое значение потоков, основанное на приблизительной оценке мощности вашего компьютера.
Если вы прочитали предыдущие пункты, то вам уже ясно, что кол-во потоков очень сильно зависит от проекта и подбирается вручную индивидуально для ваших задач. Для этого просто плавно прибавляется кол-во потоков, пока один из ресурсов компьютера не будет исчерпан.
Нужно учесть один нюанс: расход процессора можно немного превысить, т.е. если у вас он загружен на 100% увеличение потоков на 10-15% практически ничего не изменит, а главное, не ухудшит. Просто потоки будут ждать некоторое время освобождения этих ресурсов.
Оперативная память, наоборот, не должна забиваться полностью, всегда лучше оставлять 10-30%. Если она кончится, это может привести к падению ZennoPoster и всех остальных программ на вашем компьютере.

Скорость как у сокетов

Наши недобросовестные конкуренты (не будем показывать пальцем :) утверждают, что их программа может работать со скоростью сокетов, если отключить загрузку flash, скриптов, картинок и т.д.
На самом деле это не так. Браузер никогда не будет работать со скоростью прямых http запросов. Прямые запросы работают в 50-100 раз быстрее. Вы можете убедиться в этом, запустив наш проксичекер на выделенном сервере в 15000 потоков. При тестировании на серверах hetzner.de на 15000 потоках кончились свободные соединения, больше не поддерживает их сетевое оборудование, причем процессора и оперативной памяти легко хватило бы и на 50000.

ru/project-optimization.txt · Последние изменения: 2015/07/14 15:51 (внешнее изменение)