- Регистрация
- 07.05.2015
- Сообщения
- 2 177
- Благодарностей
- 2 183
- Баллы
- 113
Часто вижу вопросы типа: «Почему шаблон в 10 и в 50 потоков работает только в 2 раза быстрее а не в 5?» (свежий пример). И тогда обычно начинается холивар на тему оптимизации шаблона, выбора среды типа HDD vs RAMDisk, списки\таблицы vs БД, Intel vs AMD, поиск «узкого горлышка» через Трассировка проектов и т.д.
И вот с последним как раз проблема, ибо в трассировке легко найти по логу кубик-ошибку, но трудно посчитать среднестатистический показатель для понимания картины:
1) насколько часто эта ошибка появляется;
2) сколько в среднем времени она кушает;
3) насколько хуже тот же кубик отрабатывает в многопотоке по сравнению с однопотоком.
Вот как раз эти проблемы и закрывает мой небольшой шаблончик.
Как работает шаблон:
1. Включаем трассировку на исследуемом шаблоне (условно назовем его «Глюченый_Шаблон»).
2. Запускаем в ZennoPoster Глюченый_Шаблон в обычном режиме работы, допустим в 1…10 потоков.
3. Останавливаем работу Глюченый_Шаблон через несколько циклов работы (ну и хотя бы 60 минут чтобы он отработал). Дожидаемся завершения всех потоков. Желательно чтобы после остановки в папке из следующего пункта накопилось ~2…10 мегабайт логов.
4. Файлы трассировки (обычно они по пути типа «c:\Users\Administrator\Documents\ZennoLab\Traces\Глюченый_Шаблон.zp\») переносим в папку шаблона-анализатора «…\Analizator_Trassirovki\Input\1_Good\», то есть папка с файлами трассировки должна после этого стать пустой!
4. Запускаем Глюченый_Шаблон повторно но в режиме работы «под нагрузкой» где он по вашему мнению неоправданно «тормозит», допустим в 50…200 потоков, тут уже сами прикиньте сколько макс можно.
5. Останавливаем работу Глюченый_Шаблон как в пункте «№3» так чтобы в папке накопилось ~10…100 мегабайт логов (не рекомендую больше 100, а то может заглючить процесс). Файлы трассировки переносим в папку шаблона-анализатора «…\Analizator_Trassirovki\Input\2_Bad\».
6. Запускаем наконец-то мой шаблон-анализатор в 1 попытку и ждем. Через минут ~1...20 он обработает логи и посчитает среднее время выполнения для каждого кубика, сравнит их в обеих режимах и на выходе получим таблицы (идентичные, просто в разных форматах) типа:
«…\Analizator_Trassirovki\Table_Final_xlsx_2021-03-10-01-05.xlsx»
«…\Analizator_Trassirovki\Table_Final_csv_2021-03-10-01-05.csv»
Открываете любую таблицу, из нее можно прикинуть на каких кубиках наибольшие потери и заменить их. Например, я понял, что в моем шаблоне проблемы на кубике «71df525e-d0ff-4116-8383-eb71842933c0» («сохранения профиля») ибо в многопотоке он очень тупил, пришлось по возможности убрать его в ненужных местах.
Сортировка в таблице по последнем столбце. Везде кроме него время в миллисекундах, а вот в нем уже для удобства в минутах. Там посчитано насколько быстрее выполнился бы шаблон, если бы не было падения быстродействия. Но этот показатель еще стоит поделить на количество ваших потоков во втором режиме. То есть если у меня там было 100 потоков, значит только этот кубик украл ~4 минуты общего времени.
Кстати, если пролистать таблицу, то в низу можно найти кубики с минусовым значением. Можно было бы обрадоваться, что кубики начали быстрее выполнятся, но обычно хорошего тут мало. К примеру, у меня это кубик перехода по урлу в браузере, и среднестатистически он в многопотоке быстрее стал выполнятся из-за того, что чаще прокси не выдерживали нагрузки и пустую страницу мгновенно выдавали вместо прогрузки нормальной. Я это понял по резкому увеличению показателей в колонке «% неудач» для кубика, который в шаблоне шел следом за кубиком погрузки страницы и проверял наличие нужного текста на ней (то есть чаще по красной ветке стал выходить):
Подсказка для новичков: если вы хотите найти в таблице параметры нужного вам кубика, но не знаете его ID, то запустите в ProjectMaker его 1 раз, и из лога скопируйте ID этого действия («лог» включается через верхнее меню «Окно > Лог»):
Ну а в самом ProjectMaker кубики ищутся по ID через окно поиска (Ctrl+F):
Скачать шаблон можно в прикреплённых файлах внизу поста.
- Категория
- Аналитика
- Номер конкурса шаблонов
- Седьмой конкурс шаблонов
- Уровень сложности
- Средний
Вложения
-
23,8 КБ Просмотры: 313
Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...
Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.