Обсуждение версии 5.42.0.0

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
Начинаю подозревать почему инстансы падают.
Если сразу стартует несколько потоков, то новая зенка начала что-то там терять при одновременном создании инстансов. Возможно они криво создаются и потом падают.
И идеале надо по чуть-чуть запускать проекты вручную, тогда стабильнее.

А если загрузить зенку и там сразу на исполнение много проектов и потоков- половине из них придет задница.

Завтра может запилю тестовый проект, состоящий из одних созданий инстансов и простейших команд. Зуб даю все попадает с грохотом))
Если тест выгорит, то уже тяжело будет отвертеться словами "все стабильно, все как надо"))
 
  • Спасибо
Реакции: Сибиряк

KiryaPerseus

Client
Регистрация
17.10.2017
Сообщения
160
Благодарностей
62
Баллы
28
После обновления на 5.42.0.0 в PM у меня все работает в разы медленнее, кубики еле проходят

как будто он "тупее" стал)
 
Регистрация
12.07.2014
Сообщения
916
Благодарностей
373
Баллы
63
В регулярках конец строки $ зенка у вас нормально обрабатывает?
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
Вот простейший шаблон теста, который зацикливает действия.
У меня даже в ПМ упал на 4 попытке
1588238063308.png

И по логу видно, что в 12.11 пустое сообщение.
Т.е. оно должно было взять содержимое h1 и выдать его как сообщение.
Занка в полной уверенности что она его взяла правильно. А реально там void, а не значение.
Еще в одном месте зенка обманула.
Вместо реального значение ничего не взяла, но ошибкой это не считает.
 

Вложения

Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
а зачем ты его на перезагрузку инстансов зацикливаешь ? конечно у тебя базы будут со временем течь и зависать.
прогнал шаблон один раз и вышел. так правильно.
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
а зачем ты его на перезагрузку инстансов зацикливаешь ? конечно у тебя базы будут со временем течь и зависать.
прогнал шаблон один раз и вышел. так правильно.
А как проверить стабильность инстанса кроме как стресс нагрузкой?
Можно кучу потоков создавать паралельных, а можно в одном потоке инстанс нагружать, что проще.
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
а зачем ты его на перезагрузку инстансов зацикливаешь ? конечно у тебя базы будут со временем течь и зависать.
прогнал шаблон один раз и вышел. так правильно.
Я и стараюсь завершать потоки, после выполнения.
Однако, как ни крути, после каждого обращение к инстансу - проект не завершишь. Все равно сначала идет работа до логического завершения, а потом завершается поток и стартует новый.

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 115
Баллы
113
Вот простейший шаблон теста, который зацикливает действия.
У меня даже в ПМ упал на 4 попытке
10 проходов в ПМ 7.1.3.0 - полет нормальный.
Но нужно все же в ЗП проверять, ПМ не предназначен для подобного испытания.

PS: испытываем 7-ку все же или 5-ку? (по скрину вижу, что все же 7-ку) :-)
Даже часть обсуждения переносил уже в Обсуждение для 7-ой версии.
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 115
Баллы
113
Начинаю подозревать почему инстансы падают.
Если сразу стартует несколько потоков, то новая зенка начала что-то там терять при одновременном создании инстансов.
Где то в конфиге есть настройка задержки, которая призвана смягчить удар для железа при одновременном поднятии потоков. Надо поискать.
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
10 проходов в ПМ 7.1.3.0 - полет нормальный.
Но нужно все же в ЗП проверять, ПМ не предназначен для подобного испытания.

PS: испытываем 7-ку все же или 5-ку? (по скрину вижу, что все же 7-ку) :-)
Даже часть обсуждения переносил уже в Обсуждение для 7-ой версии.
Поставьте цикл не 10 раз, а 100 раз

И у меня есть подозрение - что половина всех проблем - это странная работа с табами.
Как вариант:

instance.AllTabs.First().Close()

Что-то там лишнее может прихватить, особенно когда в одном кубике и создаешь и закрываешь вкладку. Где-то оно там плохо синхронизированно и может залазить друг на друга.
Возможно другие команды по созданию/закрытию вкладок имеют те же проблемы.
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
И по логу видно, что в 12.11 пустое сообщение.
Т.е. оно должно было взять содержимое h1 и выдать его как сообщение.
Занка в полной уверенности что она его взяла правильно. А реально там void, а не значение.
Еще в одном месте зенка обманула.
Вместо реального значение ничего не взяла, но ошибкой это не считает.
Вот с пустым ответом - тоже на баг похоже.
Когда ничего не взяло, да и взять не могло. Но ошибкой не считает. Типо все нормально выполнило.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
а как давно ты работаешь с браузером зенки ? просто многое что вот щас озвучено, уже давно на форуме обсуждалось и обсуждается по сей день.
например давно известно , что инстанс это такая неповоротливая, тяжеловестная структура и все методы с ним работают ну очень долго. те же табы, с ними нельзя работать наскоком, без пауз. надо плавненько, закрыл/переключил таб, 200-300 миллисекунд надо выждать, а если fps рендеринга уменьшено, то не меньше расчетной паузы обновления рендера. а это и до 1 секунды может доходить. по поиску элемента то же самое. инстанс может не отдать элемент сразу. хотя вот он визуально на странице есть. у меня стоит цикл на получение элемента раз 8 с паузой в 30 миллисекунд. и отладочное сообщение выводиться если не сразу элемент найден. так вот разброс от 1 до 8 попыток. и это я про элементы говорю которые на предыдущем кубике были проверены на присутствие в течении 12 секунд.
а когда процессор начинает нагружаться под колличеством потоков, все это усугубляется. поэтому в лоб тут опасно работать, надо кучу проверочек, уверточек. это я про работу с C# щас. кубики то более менее стрессоустойчивые...
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 115
Баллы
113
Поставьте цикл не 10 раз, а 100 раз
ПМ с прошлого прогона (10 перезагрузок инстанса) не перезагружался, запустил еще прогоны, на 36-ом цикле ПМ не смог перезагрузить инстанс. В сумме получилось успешных 46 перезагрузок. Считаю это хорошим результатом именно для ПМ. Возможно у вас в системе что то не так.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
ПМ с прошлого прогона (10 перезагрузок инстанса) не перезагружался, запустил еще прогоны, на 36-ом цикле ПМ не смог перезагрузить инстанс. В сумме получилось успешных 46 перезагрузок. Считаю это хорошим результатом именно для ПМ. Возможно у вас в системе что то не так.
у меня файрфокс может и с первого раза не перезагрузиться :( а вот хром нормальный трудяга. хоть и прожорливый зараза.
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
ПМ с прошлого прогона (10 перезагрузок инстанса) не перезагружался, запустил еще прогоны, на 36-ом цикле ПМ не смог перезагрузить инстанс. В сумме получилось успешных 46 перезагрузок. Считаю это хорошим результатом именно для ПМ. Возможно у вас в системе что то не так.
Попробуйте в постере в несколько потоков. 10+ штук.
Может у вас железо успевает сделать то, что у меня не успевает. Но это же не проблема железа, что гонки возникают.
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
а как давно ты работаешь с браузером зенки ? просто многое что вот щас озвучено, уже давно на форуме обсуждалось и обсуждается по сей день.
например давно известно , что инстанс это такая неповоротливая, тяжеловестная структура и все методы с ним работают ну очень долго. те же табы, с ними нельзя работать наскоком, без пауз. надо плавненько, закрыл/переключил таб, 200-300 миллисекунд надо выждать, а если fps рендеринга уменьшено, то не меньше расчетной паузы обновления рендера. а это и до 1 секунды может доходить. по поиску элемента то же самое. инстанс может не отдать элемент сразу. хотя вот он визуально на странице есть. у меня стоит цикл на получение элемента раз 8 с паузой в 30 миллисекунд. и отладочное сообщение выводиться если не сразу элемент найден. так вот разброс от 1 до 8 попыток. и это я про элементы говорю которые на предыдущем кубике были проверены на присутствие в течении 12 секунд.
а когда процессор начинает нагружаться под колличеством потоков, все это усугубляется. поэтому в лоб тут опасно работать, надо кучу проверочек, уверточек. это я про работу с C# щас. кубики то более менее стрессоустойчивые...
Большую часть обсуждений именно ты и начал))

Зенка у меня давно, хз сколько лет. Все начальные задачи вообще кубиками решались.
Где-то год назад начали рости требования по объемам выполнения, уровню эмуляции и анонимности. Пришлось переходить на C#
Решаю, так сказать, проблемы по мере поступления. Ранее даже на форуме не было нужды сидеть)) Все и так нормально было.

Борьба с инстансом... Понимание есть, но это надо добрую часть стандартных функций дописывать... Что в теории разработчики должны делать. Потому свой код - это на уровне костыля и лейкопластыря сверху. Вообще коробит стандартные функции дописывать...
От безысходности часть уже дописал, но тут надо еще писать и писать...
Меня даже коробит вот сейчас ловить баги и на лету костыли вешать. Потому что уже несколько дней занят какой-то хренью!! Список своих задач на реализацию вообще не сдвинулся, хотя там тоже срочные дела.
Сейчас занят просто борьбой за работоспособность и стабильность.

Сколько было радости, когда обновился и все потоки всех проектов просто в ноль легли! Нихрена не заработало, то что ранее было в принципе стабильно.
Вот и решаю проблемы по мере поступления... И не оставляю надежды что решение проблем таки перерастет в решение задач, ранее себе поставленных.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 115
Баллы
113
Попробуйте в постере в несколько потоков. 10+ штук.
Может у вас железо успевает сделать то, что у меня не успевает. Но это же не проблема железа, что гонки возникают.
В ЗП в 1 поток только что закончился прогон в 100 итераций цикла, все отлично.
Сейчас попробую в несколько потоков.
Железо у меня на текущем ПК ниже среднего - 4 ядра Xeon на сокете 775 и 8 гбайт памяти.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Большую часть обсуждений именно ты и начал))

Зенка у меня давно, хз сколько лет. Все начальные задачи вообще кубиками решались.
Где-то год назад начали рости требования по объемам выполнения, уровню эмуляции и анонимности. Пришлось переходить на C#
Решаю, так сказать, проблемы по мере поступления. Ранее даже на форуме не было нужды сидеть)) Все и так нормально было.

Борьба с инстансом... Понимание есть, но это надо добрую часть стандартных функций дописывать... Что в теории разработчики должны делать. Потому свой код - это на уровне костыля и лейкопластыря сверху. Вообще коробит стандартные функции дописывать...
От безысходности часть уже дописал, но тут надо еще писать и писать...
Меня даже коробит вот сейчас ловить баги и на лету костыли вешать. Потому что уже несколько дней занят какой-то хренью!! Список своих задач на реализацию вообще не сдвинулся, хотя там тоже срочные дела.
Сейчас занят просто борьбой за работоспособность и стабильность.

Сколько было радости, когда обновился и все потоки всех проектов просто в ноль легли! Нихрена не заработало, то что ранее было в принципе стабильно.
Вот и решаю проблемы по мере поступления... И не оставляю надежды что решение проблем таки перерастет в решение задач, ранее себе поставленных.
ну добро пожаловать в клуб борцов за стабильность :-)
чот меня тоже не радует последняя обнова. щас попробую для сравнения тот же шаб прогнать через 7.1.2.0. а то я поправлял уже на 7.1.3.0 и чот прям куча вылетов на хроме.
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
@sergodjan66
+ Добавлена возможность остановить выполнение C# кода. При нажатии Стоп, если в течении 5 секунд выполнение на закончится, появится диалоговое окно с предложением прервать C# код.
Я правильно понимаю что теперь код в C# экшене выполняется в отдельном потоке?
И выполнение кода прерывается с помощью CancellationToken.
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
В ЗП в 1 поток только что закончился прогон в 100 итераций цикла, все отлично.
Сейчас попробую в несколько потоков.
Железо у меня на текущем ПК ниже среднего - 4 ядра Xeon на сокете 775 и 8 гбайт памяти.
Возможно надо наоборот чтобы полностью был свободный проц.
Вот немного переделал тестовый шаблон. Надо запускать на полностью свободном проце.
Что возникает.
1. Случай когда вкладки открываются не в том порядке, что написано в коде, а как-то случайно и активируется не та, что надо. Или вкладка, где загружается контент закрывается командой с прошлого кубика. Хотя на загрузку активной вкладки стоит if (tab.IsBusy) tab.WaitDownloading();
У меня на 5 попытке выскочило. Может иногда и не выскакивать по моим наблюдениям, а если открыть ПМ и закрыть и опять запустить - выскакивает.
Какие-то гонки потоков идут который надо именно что ловить.
54836

2. Случай когда инстанс полностью крашится.
Тут сложнее воспроизвести. Заметил, что если нагрузки проца во время активной работы с инстансом/вкладками скачет в значительных пределах, то инстанс просто может упасть. Значительные пределы -это от 100% до 0% и назад.
Т.е. надо как-то сделать один поток который работает с инстансом, и кучу потоков которые раз в 15 секунд одновременно стартуют и грузят проц, а следующие 15 сек одновременно уходят на паузу и перестают грузить проц.
Так и тестить.
 

Вложения

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 115
Баллы
113
Поставьте цикл не 10 раз, а 100 раз
Мой ПК не выдержит 10+, прогнал цикл на 100 итераций в 5 потоков, при этом сожрало почти все ресурсы (процессор и память), в процессе работы случились краши при перезагрузке инстанса 3 раза, думаю что это случилось в особо пиковые моменты потребления ресурсов.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 115
Баллы
113
@sergodjan66

Я правильно понимаю что теперь код в C# экшене выполняется в отдельном потоке?
И выполнение кода прерывается с помощью CancellationToken.
Да, в отдельном потоке, но прерывается через thread abort.
 
  • Спасибо
Реакции: Moadip

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
Мой ПК не выдержит 10+, прогнал цикл на 100 итераций в 5 потоков, при этом сожрало почти все ресурсы (процессор и память), в процессе работы случились краши при перезагрузке инстанса 3 раза, думаю что это случилось в особо пиковые моменты потребления ресурсов.
Попробуйте еще новый шаблон по технологии что в прошлом посте писал.
Тут я увидел 2 варианта поведения
1. Когда проц мало загружен
-Глючат табы что создаются и закрываются беспорядочно без учета времени загрузки
2. Когда загрузка проца резко меняется.
-Тогда инстансы могут падать окончательно


И тут очень важные моменты
1.Если инстанс завис/упал/ - то проект НЕ ДОЛЖЕН висеть часами как будто исполняется. Они либо должен не висеть, либо генерить ошибку
2. Если пик потребления ресурсов - то в идеале и тут не должен падать. Потому что там в настройках кучу времен ожидания которые должно ждать все таки.
3. ДОЛЖНО нормально контролироваться ПОЛНАЯ загрузка вкладки. Чтобы небыло такого что недозагрзилось/недозакрылась, а пошло исполнение дальше
 

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
Да, в отдельном потоке, но прерывается через thread abort.
А я то думаю, что за чудеса начались в шабах после обновы, которые до этого норм работали.
54846

54847

54848

Обмениваться объектами между экшенами можно было двумя способами или через project.context или через статическое поле с атрибутом ThreadStatic.
Теперь про второе можно забыть.
На 5.41 еще работало, то что на скрине 5.35 это что старую версию держу, для тестов.
 
  • Спасибо
Реакции: Yuriy Zymlex и Metrix

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Обмениваться объектами между экшенами можно было двумя способами или через project.context или через статическое поле с атрибутом ThreadStatic.
Теперь про второе можно забыть.
Вот блин, а у меня тоже ThreadStatic кое где используется..... правда до критов не дошло. Печально. Придеться серьезно шерстить код который исправно работал до этого.
 

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
272
Баллы
63
Обмениваться объектами между экшенами можно было двумя способами или через project.context или через статическое поле с атрибутом ThreadStatic.
Теперь про второе можно забыть.
Тоже заметил такое, спасибо за объяснение почему так, печально.
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
Staff
Предлагаю в зенке ввести обязательные действия с инстансом на уровне самой зенки
1. до изменения чего-то там через инстанс запоминать предыдущее состояние и проверять в конце вообще произошло ли изменение, то, которое возможно произвести? Если инстанс при этом решил упасть, то делать 2ой трай на действие на фоне запомненного состояния.
2. ввести таймер по ожиданию выполения команд в инстансе. Не тот, который в настойках как бы есть, а тот, который сможет определить подвисший инстанс. И чтобы его можно было либо восстановить на запомненном состоянии, либо хотя бы ошибку дать. Чтобы избежать часами висящего инстанса и как бы выполняющегося проекта.
3. Разобраться почему команды работы с инстансом могут возвращать пустые значение. На примере выше показывал. Тут надо определится. Если контента на странице нет, то команда не должна выполнятся успешно. А если как бы есть и находит, то откуда тогда пустое значение?

А то смотрю логи ошибок и типовые штуки
Error detected when getting cookie from instance
Ошибка обращения к Instance.SetProxy
Ошибка обращения к Instance.ActiveTab

А потому что инстанс то не прогрузился, то умер, то ХЗ что с ним вообще творится
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 115
Баллы
113
По поводу ThreadStatic:
  1. аттрибут [ThreadStatic] как работал в постере так и продолжает работать, там единый поток.
  2. да в отладке сломали, но починим, в ближашем релизе, будет единый поток для работы C# кода, код не будет перескакивать между потоками как сейчас, это позволит использовать аттрибут [ThreadStatic], но если вы прервете отладку, то поток персоздастся. Собсвенно так было и раньше только приходилось перезагружать PM и терялось вообще все, а не только ThreadStatic поля.
 
  • Спасибо
Реакции: Moadip и Yuriy Zymlex

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 947
Благодарностей
767
Баллы
113
Вношу предложение

В постере сделать колонку где будет виден PID
По идее это совсем не сложно

Это позволит через таск менеджер контролировать потребление ресурсов каждым проектом.
Как минимум быстро понять который из проектов сошел сума и начал жрать ресурсы.

Контроль ресурсов системы - тоже очень важное занятие при условии что у тебя выполняется больше 1 потока.


В текущем виде надо
1. зайти в таск менеджер и посмотреть PID жрущего
2. Открыть ВСЕ инстансы
3. Подождать пока это многообразие окон загрузиться. При значительном потреблении проца - это совсем не быстро.
4. Вручную прокликать полузависшие окна инстансов чтобы сравнить PID
 

Castaneda

Client
Регистрация
24.05.2019
Сообщения
872
Благодарностей
299
Баллы
63
Обновился до 42
PM фризит как не в себя.
Ужас
вернулся на 32
 

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