Ускорение загрузки PM: возможность отключить запуск pminstance_ff*.exe при старте

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
Подозреваю (но не уверен в своей мысли), что запуск PM в основном тормозит из-за того, что там при старте запускается инстанс FireFox. Но очень часто сейчас:
  1. Браузер вовсе не нужен в том шаблоне, который нужно отредактировать или хочешь сделать (пример: GET/POST шаблоны).
  2. Из-за различных движков браузера - инстанс всё равно приходится "перезапускать" (пример: старые шаблоны на FF45, которые нужно отредактировать)
  3. Браузер теперь можно запустить "по требованию" через C# код.

В идеале, конечно, хотелось бы иметь возможность в настройках сделать выбор: запускать инстанс браузера при старте PM или отложить его до запуска шаблона (то есть запускать "вручную", как это сейчас происходит если инстанс по каким-то причинам "упал" во время разработки - скрин примера).

Сейчас зарепорчу эту идею в support.zennolab.com ещё, чтоб она тут не утонула на форуме. Интересно было бы знать что думают по этому поводу разработчики, возможно что инстанс FF вовсе и не тормозит процесс загрузки, но что-то мне кажется, что это не так :-)
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
запуск PM в основном тормозит
Давно писал об этом, но осталось всё так же.

Было бы хорошо, если бы запуск ПМ не зависил от запуска встроенного FF (запускался по вызову или отложенно).
Очень часто требуется, что-то посмотреть, проверить, исправить, т.е. не связанное с непосредственной работой в браузере.
Браузер теперь можно запустить "по требованию" через C# код.
Но самое дурацкое - его нельзя завершить!(facepalm)
возможно что инстанс FF вовсе и не тормозит процесс загрузки
И в PM и в CC заметно, что они долго ждут FF, но в ПМ несколько обновлений назад, ещё что-то добавили и его запуск стал ещё дольше.
На HDD это сильно заметно, особенно когда Visual Studio его обгоняет (хотя там хлама на порядки).:au:
 
Последнее редактирование:

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
Но самое дурацкое - его нельзя завершить.(facepalm)
Да, мне это тоже не нравится. Но скорее всего проблема в том, что в 1 базе может крутиться несколько инстансов (по настройкам зенки).

Любопытно, помогут ли в таком случае "выгрузить" и очистить память инстанса методы:
C#:
// https://help.zennolab.com/en/v5/zennoposter/5.17.0.0/webframe.html#topic262.html
// Performs a forced garbage collection. May cause the application hangs. ATTENTION! When using MinimizeMemory deletes all references to elements and documents, and thus need to re-obtain elements and documents.
instance.MinimizeMemory();
+
C#:
// https://help.zennolab.com/en/v5/zennoposter/5.17.0.0/webframe.html#topic266.html
// Reloads the current Instance object. Works only in ProjectMaker and ZennoPoster.
instance.Reload();
Я сам не тестил, но может кто-то проверит и скажет.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
может кто-то проверит и скажет.
Потестил, результат интересный.

Надо выставить время жизни базы 1.

Данный код всё же работает, но инстансы зенка завершает по таймеру.
Таймер общий, т.е. инстансы завершаются одновременно.
C#:
instance.Launch(InterfacesLibrary.Enums.Browser.BrowserType.WithoutBrowser, true); // освобождает FF
после данной команды instance.Reload(); выдаёт ошибку обращения к Instance.UseBrowserWithoutContent.

И ещё:
C#:
//ZennoPoster.ReleaseInstance(instance.Url, instance.Port, instance.Address); // хз
instance.ReleasePreparing(false); // тоже освобождает FF, наверно надо false, если ReleaseInstance не выполнялся
Пытался ещё выставить в globalsettings.settings.json InstanceInactiveTimeout в 0, но зенка его не принимает.
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: Lord_Alfred

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
Уточнил в саппорте, по данным методам:
ReleaseInstance должен использоваться в связке с GetNewInstance. Для работы этих методов должен быть запущен ZennoPoster.

ReleasePreparing - флаг поднимается только при освобождении инстанса.
Если поставить ReleasePreparing true, то в инстансе перестанут инициализироваться новые вкладки, трафик монитор будет рвать все запросы.

MinimizeMemory вызывает сборщики мусора в инстансе, и инстанс освобождает память, какую может.
 
  • Спасибо
Реакции: Lord_Alfred

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
Тикет на support почему-то закрыт был и без ответа, мб случайно вышло.
Всё таки хочется услышать что-то от разработчиков об этом, вроде бы идея в старт-посте важная и нужная - быстрее грузится PM => все юзеры довольны
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 189
Благодарностей
5 830
Баллы
113
Основной компонент интерфейса ProjectMaker - это именно браузер, в котором пользователь может автоматизировать свои действия.
Данное отключение может помочь для ускорения запуска только в том случае, если ProjectMaker запускается с открытия файла проекта, причем безбраузерного.
Т.е. общее отключение этого процесса при старте программы точно не нужно. Нужно оно только в частном порядке нескольким продвинутым пользователям работающим с безбраузерными проектами.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
Основной компонент интерфейса ProjectMaker - это именно браузер, в котором пользователь может автоматизировать свои действия.
Данное отключение может помочь для ускорения запуска только в том случае, если ProjectMaker запускается с открытия файла проекта, причем безбраузерного.
Т.е. общее отключение этого процесса при старте программы точно не нужно. Нужно оно только в частном порядке нескольким продвинутым пользователям работающим с безбраузерными проектами.
Да, согласен со всем сказанным. Но может имеет смысл сделать функционал запуска безбраузерного ProjectMaker хотя бы при открытии безбраузерного проекта? Уже гораздо приятнее стало бы
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 189
Благодарностей
5 830
Баллы
113
Да, согласен со всем сказанным. Но может имеет смысл сделать функционал запуска безбраузерного ProjectMaker хотя бы при открытии безбраузерного проекта? Уже гораздо приятнее стало бы
Пообщаюсь с разработчиками после праздников.
 
  • Спасибо
Реакции: Lord_Alfred

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
неудобно конечно, но если используешь только на гет то ни каких проблем остановить процессы
2019-01-05_001242.png
при запуске имеем только процесс ПМ\
2019-01-05_001342.png
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
неудобно конечно, но если используешь только на гет то ни каких проблем остановить процессы
Конечно неудобно. Тут речь идет о том, чтоб вообще "pminstance_*.exe" не запускать, чтоб PM грузился быстрее при старте (если нужно только отредактировать браузерный шаблон и не обязательно его запускать ИЛИ шаблон вообще безбраузерный и там инстансы эти не нужны при старте).
 
  • Спасибо
Реакции: Yuriy Zymlex

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Конечно неудобно. Тут речь идет о том, чтоб вообще "pminstance_*.exe" не запускать, чтоб PM грузился быстрее при старте (если нужно только отредактировать браузерный шаблон и не обязательно его запускать ИЛИ шаблон вообще безбраузерный и там инстансы эти не нужны при старте).
для меня трудов не составляет подставить подчёркивание, в моём случае ПМ запущен без процесса инстанса
 

phirelli

Client
Регистрация
11.09.2016
Сообщения
34
Благодарностей
6
Баллы
8
Ребята подскажите пожалуйста кто знает ответ на два я думаю для вас простых вопроса:
1. Если какая то польза от instance.MinimizeMemory(); и когда этот метод лучше всего применяют? Я у себя в шабе пробовал, но при длительной работе всё равно инстанс начинает тупить. Может просто пользоваться instance.Reload(); и всё?
2. Непонятно почему но бывает браузер полностью падает и процесс сам убивается и из за этого шаблон не может отрабатывать свои действия именно в браузере дальше, то есть команды которые выполняются не в браузере работают и дальше себе, вопрос такой: Можно ли как то запустить этот процесс из зенки, может есть какие то команды на C# очень нужно, потому как бывает падает браузер в разный период, иногда и за короткое время а иногда и через 1 час. И такой метод естественно не работает так же instance.Launch(InterfacesLibrary.Enums.Browser.BrowserType.Firefox52, true); выдаётся ошибка: "Выполнение действия CSharp OwnCode Требуется задать действительную информацию для разбора данной строки."
https://prnt.sc/m3d0zj
 
Последнее редактирование:

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113

phirelli

Client
Регистрация
11.09.2016
Сообщения
34
Благодарностей
6
Баллы
8
Понял спасибо!
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 189
Благодарностей
5 830
Баллы
113
Для быстрого запуска PM, попробуйте вот эту галку поставить.
В первый раз он потупит, но потом будет раза в 2 быстрее запускаться.
Не заполнять кэш настроек действий.png

Насчет отключения запуска процесса PMinstance.exe, на самом деле он запускается гораздо быстрее самой программы.
Поэтому если PM запускается реально долго, то тут надо разбираться из-за чего.
Желательно прислать нам репорт с подробным логом и предварительно очищенной папкой Progs\Logs перед воспроизведением проблемы.
 
  • Спасибо
Реакции: Sergodjan

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
Для быстрого запуска PM, попробуйте вот эту галку поставить.
В первый раз он потупит, но потом будет раза в 2 быстрее запускаться.
Субъективно: лучше НЕ стало с этой галочкой :-)

Поэтому если PM запускается реально долго, то тут надо разбираться из-за чего.
Желательно прислать нам репорт с подробным логом и предварительно очищенной папкой Progs\Logs перед воспроизведением проблемы.
Готово, отправил лог в тикете: #OEA-289-77453

Приложу тут некоторые данные из лога, чтоб другие могли сравнить с моими значениями.

nonCriticalErrors-ProjectMaker.txt
2019-01-17 15:56:21.2780|23|DebugBaseManager.QueueProcessing|WcfHelper: RunProcess C:\Program Files\ZennoLab\RU\ZennoPoster Pro\5.26.0.0\Progs\pminstance_ff52.exe|
...
...
...
2019-01-17 15:57:09.2672|1|UiThread|Init TaskManager: MTCount Start = 2000|
Разница между этими двумя действиями - 48 секунд.

nonCriticalErrors-pminstance_ff52.txt
2019-01-17 15:56:22.0592|1||DebugForm InitializeComponent|
...
...
...
2019-01-17 15:57:07.3298|1||Instance SetHeader UserAgent value Mozilla/5.0 (Windows NT 5.1; rv:52.0) Gecko/20100101 Firefox/52.0|
Разница между этими двумя действиями - 45 секунд.


PS: если переименовать инстансы по методу @ssXXXss, то в nonCriticalErrors-ProjectMaker.txt тогда разница между этими двумя действиями становится 46 секунд, так что да, действительно - "дело не в бобине" (не в pminstance_)...

PPS: предопределяя вопрос о том, что ~45-50 секунд - это не долго, я сразу отвечу - это очень долго. Судя по логу pminstance и projectmaker - часть действий уже можно или убрать, или вообще сделать чтоб они только после появления графического интерфейса запускались. Т.к. по большому счёту мне, как пользователю программы, не важно что он там на фоне делает - мне важно, чтоб интерфейс был отзывчивым и быстро запускался. Опрос всех серверов и установка всяких UserAgent'ов условно говоря - может произойти и после запуска ведь.
 
  • Спасибо
Реакции: Yuriy Zymlex

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 189
Благодарностей
5 830
Баллы
113

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
Ресурсы процессора потребляются в течение всех 45 секунд или нет?
Ресурсы процессора начинают потребляться только с 24 секунды после запуска (30 секунда в видео), когда появляется окно "Загрузка модулей". И то всего 1 ядра из 20.
Я вот даже видео записал :-) Только стоит учесть, что там запускается PM в тот момент, когда у указателя мыши появляется полоса прокрутки, где-то с 6 секунды, и ещё в 7 ядре процессора нагрузка постоянная с начала - это запись видео.
 

Вложения

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 189
Благодарностей
5 830
Баллы
113
@Lord_Alfred спасибо.

Интересно также получить инфу от других пользователей. Сколько длитcя запуск программы и что происходит при этом.
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 189
Благодарностей
5 830
Баллы
113
Ресурсы процессора начинают потребляться только с 24 секунды после запуска (30 секунда в видео), когда появляется окно "Загрузка модулей". И то всего 1 ядра из 20.
Я вот даже видео записал :-) Только стоит учесть, что там запускается PM в тот момент, когда у указателя мыши появляется полоса прокрутки, где-то с 6 секунды, и ещё в 7 ядре процессора нагрузка постоянная с начала - это запись видео.
Можно попросить открыть вкладку Подробности и отсортировать процессы по CPU? Чтобы понять при запуске что же потребляет процессор.
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
Можно попросить открыть вкладку Подробности и отсортировать процессы по CPU? Чтобы понять при запуске что же потребляет процессор.
Готово. Я там ещё покликал между вкладками "Производительность" и "Подробности" под конец, чтоб можно было запаузить и увидеть, что нагрузка есть (в 3-м ядре), просто в столбце ЦП (во вкладке "Подробности") значение это для всех 20 ядер, поэтому там не прыгает под 100%.
 

Вложения

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 189
Благодарностей
5 830
Баллы
113
Готово. Я там ещё покликал между вкладками "Производительность" и "Подробности" под конец, чтоб можно было запаузить и увидеть, что нагрузка есть (в 3-м ядре), просто в столбце ЦП (во вкладке "Подробности") значение это для всех 20 ядер, поэтому там не прыгает под 100%.
Как говорят разработчики, тут можеть быть 2 варианта:
1. Тормозит проверка лицензии из-за тормозного WMI в системе. Т.е. нужно чинить WMI.
2. Тормозит подключение к серверу userarea.zennolab.com.
В директории программы в файлах ProjectMaker.exe.config и ZennoPoster.exe.config нужно
все вхождения https://userarea.zennolab.com/ заменить на https://userarea-us.zennolab.com/
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
1. Тормозит проверка лицензии из-за тормозного WMI в системе. Т.е. нужно чинить WMI.
А как это можно сделать?

2. Тормозит подключение к серверу userarea.zennolab.com.
В директории программы в файлах ProjectMaker.exe.config и ZennoPoster.exe.config нужно
все вхождения https://userarea.zennolab.com/ заменить на https://userarea-us.zennolab.com/
Попробую этот вариант, спасибо!
Хоть пинг и не особо показателен, т.к. может тормозить именно подключение (ваш сервер), но даже тут есть уже выигрыш, что удивительно для меня, т.к. мой сервер не в US :-) Видимо, на этот сервер у вас нагрузки меньше?
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 352
Благодарностей
3 279
Баллы
113
Тормозит проверка лицензии из-за тормозного WMI в системе.
Он похоже всегда не быстрый. Хотя в логах не упоминается.
Если только ReloadLicense не начнётся, тогда запуск вообще затягивается...
Тормозит подключение к серверу userarea.zennolab.com.
Нет отличий по времени.

Кстати, по пингу. @VladZen зачем ПМ вообще пингует сервера, если ему это не требуется?
 

Вложения

  • Спасибо
Реакции: Lord_Alfred

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
2. Тормозит подключение к серверу userarea.zennolab.com.
В директории программы в файлах ProjectMaker.exe.config и ZennoPoster.exe.config нужно
все вхождения https://userarea.zennolab.com/ заменить на https://userarea-us.zennolab.com/
Протестировал этот вариант. Не помогло, скорее даже стало хуже на несколько секунд...

Если только ReloadLicense не начнётся, тогда запуск вообще затягивается...
Да, тоже такое ловил, когда запустил случайно версию 5.16.2.0 ProjectMaker - появляется вначале окно "Инициализируем подключение", потом "Обновление лицензий", которые и так очень долго висят (секунд по 30 так точно), но и перед их появлением - тоже проходит достаточно долгое время.

К слову, только сейчас понял, что окно "Загрузка модулей" не показывается очень долгое время. А раньше вроде бы сразу после клика оно появлялось, поэтому и PM быстрее грузился?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 189
Благодарностей
5 830
Баллы
113
Протестировал этот вариант. Не помогло, скорее даже стало хуже на несколько секунд...


Да, тоже такое ловил, когда запустил случайно версию 5.16.2.0 ProjectMaker - появляется вначале окно "Инициализируем подключение", потом "Обновление лицензий", которые и так очень долго висят (секунд по 30 так точно), но и перед их появлением - тоже проходит достаточно долгое время.

К слову, только сейчас понял, что окно "Загрузка модулей" не показывается очень долгое время. А раньше вроде бы сразу после клика оно появлялось, поэтому и PM быстрее грузился?
Понятно. Будем думать как оптимизировать запуск
 
  • Спасибо
Реакции: Yuriy Zymlex и Lord_Alfred

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
у меня 5.25 грузится за секунд 15
 

Lord_Alfred

Client
Регистрация
09.10.2015
Сообщения
3 916
Благодарностей
3 852
Баллы
113
у меня 5.25 грузится за секунд 15
По логу посчитал как я выше писал или примерно прикинул?
Просто я тоже думал, что у меня за 30 секунд грузится, а оказалось ~50, когда по логу посмотрел :eek:
 
Последнее редактирование:
  • Спасибо
Реакции: Yuriy Zymlex

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