Базовые понятия оптимизации шаблонов

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Оптимизация шаблонов - процесс призванный повышать эффективность шаблона путём устранения узких мест. В данном материале описываются базовые аспекты оптимизации и её уровни, цель которую я преследую - дать базовое понимание тем у кого отсутствуют соответствующие навыки - в основном это начинающие пользователи ZP.

Фронт работ визуально можно представить следующим наглядным изображением:
djpN2Ci.png

Направление фронта работ - начинаем внутри, по мере работ переходим во внешние блоки. Если внутренний блок не оптимизирован - то оптимизация внешних блоков крайне мало поможет делу, и будет серьёзно ограничена.

Блок шаблона

Архитектура

Разрабатывается исходя из следующих принципов
  • Логика отдельно, исполнительная (многопоточная) часть отдельно (пример шаблона парсинга статей на сложном сайте: один шаблон в один поток составляет список ссылок разделов, второй многопоточно составляет список ссылок на статьи проходя по разделам, третий многопоточно парсит сами статьи по заранее спаршенному списку)
  • Всё что делается два раза и более будь то блок действий или шаг - помещается в цикл, если понадобится третий раз что-то подобное выполнить то у нас добавляется к циклу итерация, а не размножается говнокод
  • Блоки действий стремятся к тому, чтобы блок был ответственнен за конкретный участок работы, к примеру могут быть блоки: авторизация, постинг, голосование
  • Всё подробно комментируется, блоки действий, шаги, неясности. Завтра может понадобится переделать шаблон, и эта мера упростит понимание что как устроено
  • Стремимся при работе с WEB частью пропускать лишние этапы, примеры

  • Авторизоваться можно не с тяжёлой главной, а со специальной формы входа которая легче
  • Не обязательно гулять по сайту на пути к редатору добавления новости, а можно напрямую перейти по URL добавления новости
  • Хитровыебанные защиты часто можно обходить переходом на WAP версию сайта (не забыв включить соответствующий мобильный User Agent)

Настройка шаблона
  • Картинки, flash и прочее - часто можно не использовать, эмуляцию так же
  • Картинки/flash/эмуляцию - можно включать к примеру только там, где необходимо, и тем самым повышать скорость загрузки страницы на остальных этапах работы
  • Часто нет необходимости ожидать прогрузки всяких AJAX элементов, и можно так же воспользоваться данной настройках для оптимизации работы

Шаг шаблона
Очень обширная сфера оптимизации. Ориентиром здесь является время затрачиваемое на выполнение шага, если оно велико - можно задуматься над тем как работу шага вынести. Идеал - шаг надо выкинуть упростив работу так, чтобы в нём необходимости не было вообще.

На текущий момент оптимизации происходят такого рода:
  • WEB часть управляемая браузером заменяется на скоростные GET/POST запросы
  • Когда у нас много больших текстовых данных, то тяжёлые с точки зрения ZP шаги работы с таблицей/списками заменяются на использование баз типа SQLite, или работой с внешними PHP скриптами, откуда берётся задание, и закидывается результат (остальное в MySQL базе лежит)
  • Когда нехватает скорости загрузки на FTP, шаблон формирует задание и отдаёт его сторонней самописной программе, которая заливает всё многопоточно

В основном это требует определённого опыта внедрения, на этом уровне часто решается достаточно серьёзный блок задач.

Управление ZP

Потоки
Не всегда линейно влияют на производительность шаблона, здесь необходимо методом экспериментов находить рабочее значение. Оптимальное рабочее значение находится путём оптимизации шаблона на выдержку определённого времени выполнения, технически это выглядит как зацикливание действий на определённое число выполнений (это делается для исключения случаев когда потоки тупо не удаётся забить работой так как быстро слишком отрабатывают), и дальнейшим тестированием того при каком количестве потоков какую производительность выдаёт шаблон. Актуально для мощного железа. На малом таких эффектов проблем как правило не приходится ожидать.

Прокси
На паблике работать можно, но в таком случае придётся основательно оптимизировать шаблон под такой вариант, что ошибки будут везде, и всегда, и брать количеством попыток, чем больше действий с WEB частью, тем больше надо покрывать такой логикой работу. Лучшие прокси серверные. Стоит понимать что в зависимости от GEO расположения прокси сайт может менять элементы на своей страницы, и это большой источник проблем для многих, решения таких проблем в логгирование того что на сайте, и адаптированием шаблона под новые реалии, ещё можно использовать универсальные признаки поиска форм.

Групповая работа шаблонов
Шаблоны могут работать группой, и если между ними работа разделена по правилам описанным выше, то эффект от групповой работы возрастает основательно. Оптимизация группы состоит в том, чтобы оптимизировать шаблон под работу с другими шаблонами как описано выше было, если там всё правильно сделано, то такая работа будет быстрей давать конечный результат для шаблонов с большим количеством веб действий.

Железо

RAM
Потребляется инстансами как вода человеком, здесь стоит понимать что чем меньше ребутим инстанс - тем больше жрётся RAM, исходим исходя из этого

CPU
Чем чаще ребутится инстанс, тем больше потребляется CPU.

Балансируя между вышеописанными параметрами можно добиваться соответствующей нагрузки на нужный ресурс, если RAM мало то делаем упор на CPU (и теряем производительность шаблона так как инстансы своими перезапусками воруют время), если RAM много то забиваем только её, упор при покупке серверов стоит делать на RAM.

Канал
ZP его мягко говоря потребляет относительно слабо, исключение это большое количество GET/POST запросов. Как правило мне на достаточно мощных серверах 100 Мбит всегда хватало, и никогда я их не забивал достаточно сетевой нагрузкой.

На последок, главная оптимизация века - каждой задаче свой инструмент, если силами ZP парсить поисковики или писать спамилки то вся текущая информация в данной статье будет достаточно бестолковой, важно это понимать и исходить из этого.
 

Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте программу ZennoPoster. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

nuaru

Main Administrator
Команда форума
Регистрация
14.01.2009
Сообщения
3 645
Благодарностей
2 513
Баллы
113
Конечно, GET/POST запросы, MySQL, PHP скрипты, FTP - это не для новичков :-)
Тем не менее, данную статью полезно будет почитать всем, - и новичкам и тем, кто давно работает с ZennoPoster. Вариантов оптимизации перечислено много, поэтому каждый найдет для себя что-то интересное.
Спасибо CSS, что поделился со всеми своим богатым опытом!
 
  • Спасибо
Реакции: CSS

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Очень подробно, спасибо!)
 

Lite

Client
Регистрация
17.10.2013
Сообщения
283
Благодарностей
89
Баллы
28
Балансируя между вышеописанными параметрами можно добиваться соответствующей нагрузки на нужный ресурс, если RAM мало то делаем упор на CPU (и теряем производительность шаблона так как инстансы своими перезапусками воруют время), если RAM много то забиваем только её, упор при покупке серверов стоит делать на RAM.
Перезапуск инстанса - это перезапуск шаблона?

На последок, главная оптимизация века - каждой задаче свой инструмент, если силами ZP парсить поисковики или писать спамилки то вся текущая информация в данной статье будет достаточно бестолковой, важно это понимать и исходить из этого.
Имеется в виду, что ЗП для других задач? (мне казалось что большинство использует ЗП как-раз для постинга (грубо говоря спама))
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Перезапуск инстанса - это перезапуск шаблона?
Да в этом контексте. Но вообще инстансы можно перезагружать и внутри шаблона экшеном Браузер - Настройки.

Имеется в виду, что ЗП для других задач? (мне казалось что большинство использует ЗП как-раз для постинга (грубо говоря спама))
используют, используют)
Просто ZP можно пробить те ресурсы, которые не пробивают массовые спамилки)
Вообще тут все очень индивидуально. Есть ребята, у которых вообще несколько десятков лицензий на серверах, с которых они чего-то делают)
 
  • Спасибо
Реакции: List и ipetrov

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Перезапуск инстанса - это перезапуск шаблона?
Да

Имеется в виду, что ЗП для других задач? (мне казалось что большинство использует ЗП как-раз для постинга (грубо говоря спама))
Здесь имеется ввиду что ZP использовать необходимо лишь там, где он силён: обход эмуляций, быстрое написание шаблонов чтобы что-то проверить быстро, необходимость использования браузера (к примеру на сайте JS защиты которые меняются постоянно). Если мы используем его только там - то получаем максимум. Многие начинают его использовать везде, таким образом проигрывая там где ZP хромает (скорость работы, пожирание вычислительных ресурсов).
 
  • Спасибо
Реакции: List и Lankorn

finista

Client
Регистрация
10.10.2012
Сообщения
365
Благодарностей
57
Баллы
28
Класс !!! Спасибо большое
 

strannic

Client
Регистрация
05.12.2010
Сообщения
224
Благодарностей
10
Баллы
18
Когда у нас много больших текстовых данных, то тяжёлые с точки зрения ZP шаги работы с таблицей/списками заменяются на использование баз типа SQLite
а есть пример как работать подобным образом ?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Функций таких в самой программе нет. Если только через код кодить)
Поищите на форуме по запросу mysql, там были разные посты.
 

Vasar

Client
Регистрация
08.04.2010
Сообщения
150
Благодарностей
75
Баллы
28
Спасибо за статью.
На последок, главная оптимизация века - каждой задаче свой инструмент, если силами ZP парсить поисковики или писать спамилки то вся текущая информация в данной статье будет достаточно бестолковой, важно это понимать и исходить из этого.
С этого момента можно поподробнее, чем тогда лучше парсить поисковики и делать спамилки?
 

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Спасибо за статью.

С этого момента можно поподробнее, чем тогда лучше парсить поисковики и делать спамилки?
Поисковики - A-Parser (пока что конкурентов ему не вижу в этой области), спамилки - не знаю как сейчас так как с этой темой сейчас не связан, нужно посмотреть более детально, я полагаю что может быть эффективным использование (другой софт), для которого давно есть возможность создавать свои модификации под новые движки (ModCreator), но спамилки можно на самом деле и на ZP писать, только придётся делать достаточно много рутиной работы, и нужно чётко представлять что делать и как, иначе может получиться неповоротливый хлам.
 
  • Спасибо
Реакции: females и Vasar

Vasar

Client
Регистрация
08.04.2010
Сообщения
150
Благодарностей
75
Баллы
28
Да (другой софт) может, но у него настолько неудобный интерфейс, что я вообще не понимаю как с ним работать можно.
 

Lankorn

Client
Регистрация
09.01.2013
Сообщения
78
Благодарностей
3
Баллы
8
Пожалуй оставлю тему, как нагрудный дневник, к которому всегда обращаешься в работе. Спасибо.
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
Поисковики - A-Parser (пока что конкурентов ему не вижу в этой области)
Content Downloader переплюнет его в 100 раз по всем параметрам. Прежде всего функционалом, до которого A-Parser-у далеко
 

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
Content Downloader переплюнет его в 100 раз по всем параметрам. Прежде всего функционалом, до которого A-Parser-у далеко
И давно Content Downloader научился в 1k и более потоков работать с поисковиками? Последний раз там потолок что-то в районе 50 потоков был, и жрал нещадно CPU.

Этот вертолёт (CD aka Content Downloader) удобен если разобраться, но не масштабируем, у него другая ниша.
 

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
Да-да-да. Снимаю шляпу. Давно не заглядывал в А-Парсер. Действительно там написано "парсер способен распараллеливать сетевые операции до 5000-10000 потоков". Интересно, кому-то, кто уже пользуется им, удаётся парсить Гугле, хотя бы в 50 потоков? И сколько для этого надо проксей, и каких?

Но, что касается статьи. Написано всё интересно, хотя, иногда хочется немного проще услышать фразу. А вот чего не хватает, так это небольшого углубления в тему. Это было бы здорово, увидеть продолжение, которое дало бы возможность охватить вопрос конкретнее.

Второй момент, нужны были бы примеры. Лучше в виде схемок, типа майнд-карт. Это вообще было бы здорово.

Третий момент, который хочется спросить автора, касается самого хода работ. В начале приходится делать многие действия, которые потом оказываются лишними, и вот тут, при объёмном шаблоне, наступает "мрак",- надо бы вычистить, изменить, кое-что убрать. А так не хочется потерять что-то. Какую в данном случае выбрать стратегию, чтобы более оптимально можно было бы привести шаблон в божеский вид без потери качества?
 
Последнее редактирование:

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