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

  • Автор темы Автор темы Deemer84
  • Дата начала Дата начала
Начинаю подозревать почему инстансы падают.
Если сразу стартует несколько потоков, то новая зенка начала что-то там терять при одновременном создании инстансов. Возможно они криво создаются и потом падают.
И идеале надо по чуть-чуть запускать проекты вручную, тогда стабильнее.

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

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

как будто он "тупее" стал)
 
Вот простейший шаблон теста, который зацикливает действия.
У меня даже в ПМ упал на 4 попытке
1588238063308.png

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

Вложения

Последнее редактирование:
а зачем ты его на перезагрузку инстансов зацикливаешь ? конечно у тебя базы будут со временем течь и зависать.
прогнал шаблон один раз и вышел. так правильно.
 
а зачем ты его на перезагрузку инстансов зацикливаешь ? конечно у тебя базы будут со временем течь и зависать.
прогнал шаблон один раз и вышел. так правильно.
А как проверить стабильность инстанса кроме как стресс нагрузкой?
Можно кучу потоков создавать паралельных, а можно в одном потоке инстанс нагружать, что проще.
 
а зачем ты его на перезагрузку инстансов зацикливаешь ? конечно у тебя базы будут со временем течь и зависать.
прогнал шаблон один раз и вышел. так правильно.
Я и стараюсь завершать потоки, после выполнения.
Однако, как ни крути, после каждого обращение к инстансу - проект не завершишь. Все равно сначала идет работа до логического завершения, а потом завершается поток и стартует новый.

конечно у тебя базы будут со временем течь и зависать.
Это тоже не нормально!
 
Вот простейший шаблон теста, который зацикливает действия.
У меня даже в ПМ упал на 4 попытке
10 проходов в ПМ 7.1.3.0 - полет нормальный.
Но нужно все же в ЗП проверять, ПМ не предназначен для подобного испытания.

PS: испытываем 7-ку все же или 5-ку? (по скрину вижу, что все же 7-ку) :-)
Даже часть обсуждения переносил уже в Обсуждение для 7-ой версии.
 
Последнее редактирование:
Начинаю подозревать почему инстансы падают.
Если сразу стартует несколько потоков, то новая зенка начала что-то там терять при одновременном создании инстансов.
Где то в конфиге есть настройка задержки, которая призвана смягчить удар для железа при одновременном поднятии потоков. Надо поискать.
 
10 проходов в ПМ 7.1.3.0 - полет нормальный.
Но нужно все же в ЗП проверять, ПМ не предназначен для подобного испытания.

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

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

instance.AllTabs.First().Close()

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

Вот с пустым ответом - тоже на баг похоже.
Когда ничего не взяло, да и взять не могло. Но ошибкой не считает. Типо все нормально выполнило.
 
а как давно ты работаешь с браузером зенки ? просто многое что вот щас озвучено, уже давно на форуме обсуждалось и обсуждается по сей день.
например давно известно , что инстанс это такая неповоротливая, тяжеловестная структура и все методы с ним работают ну очень долго. те же табы, с ними нельзя работать наскоком, без пауз. надо плавненько, закрыл/переключил таб, 200-300 миллисекунд надо выждать, а если fps рендеринга уменьшено, то не меньше расчетной паузы обновления рендера. а это и до 1 секунды может доходить. по поиску элемента то же самое. инстанс может не отдать элемент сразу. хотя вот он визуально на странице есть. у меня стоит цикл на получение элемента раз 8 с паузой в 30 миллисекунд. и отладочное сообщение выводиться если не сразу элемент найден. так вот разброс от 1 до 8 попыток. и это я про элементы говорю которые на предыдущем кубике были проверены на присутствие в течении 12 секунд.
а когда процессор начинает нагружаться под колличеством потоков, все это усугубляется. поэтому в лоб тут опасно работать, надо кучу проверочек, уверточек. это я про работу с C# щас. кубики то более менее стрессоустойчивые...
 
Поставьте цикл не 10 раз, а 100 раз
ПМ с прошлого прогона (10 перезагрузок инстанса) не перезагружался, запустил еще прогоны, на 36-ом цикле ПМ не смог перезагрузить инстанс. В сумме получилось успешных 46 перезагрузок. Считаю это хорошим результатом именно для ПМ. Возможно у вас в системе что то не так.
 
ПМ с прошлого прогона (10 перезагрузок инстанса) не перезагружался, запустил еще прогоны, на 36-ом цикле ПМ не смог перезагрузить инстанс. В сумме получилось успешных 46 перезагрузок. Считаю это хорошим результатом именно для ПМ. Возможно у вас в системе что то не так.
у меня файрфокс может и с первого раза не перезагрузиться :( а вот хром нормальный трудяга. хоть и прожорливый зараза.
 
ПМ с прошлого прогона (10 перезагрузок инстанса) не перезагружался, запустил еще прогоны, на 36-ом цикле ПМ не смог перезагрузить инстанс. В сумме получилось успешных 46 перезагрузок. Считаю это хорошим результатом именно для ПМ. Возможно у вас в системе что то не так.
Попробуйте в постере в несколько потоков. 10+ штук.
Может у вас железо успевает сделать то, что у меня не успевает. Но это же не проблема железа, что гонки возникают.
 
а как давно ты работаешь с браузером зенки ? просто многое что вот щас озвучено, уже давно на форуме обсуждалось и обсуждается по сей день.
например давно известно , что инстанс это такая неповоротливая, тяжеловестная структура и все методы с ним работают ну очень долго. те же табы, с ними нельзя работать наскоком, без пауз. надо плавненько, закрыл/переключил таб, 200-300 миллисекунд надо выждать, а если fps рендеринга уменьшено, то не меньше расчетной паузы обновления рендера. а это и до 1 секунды может доходить. по поиску элемента то же самое. инстанс может не отдать элемент сразу. хотя вот он визуально на странице есть. у меня стоит цикл на получение элемента раз 8 с паузой в 30 миллисекунд. и отладочное сообщение выводиться если не сразу элемент найден. так вот разброс от 1 до 8 попыток. и это я про элементы говорю которые на предыдущем кубике были проверены на присутствие в течении 12 секунд.
а когда процессор начинает нагружаться под колличеством потоков, все это усугубляется. поэтому в лоб тут опасно работать, надо кучу проверочек, уверточек. это я про работу с C# щас. кубики то более менее стрессоустойчивые...
Большую часть обсуждений именно ты и начал))

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

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

Сколько было радости, когда обновился и все потоки всех проектов просто в ноль легли! Нихрена не заработало, то что ранее было в принципе стабильно.
Вот и решаю проблемы по мере поступления... И не оставляю надежды что решение проблем таки перерастет в решение задач, ранее себе поставленных.
 
Попробуйте в постере в несколько потоков. 10+ штук.
Может у вас железо успевает сделать то, что у меня не успевает. Но это же не проблема железа, что гонки возникают.
В ЗП в 1 поток только что закончился прогон в 100 итераций цикла, все отлично.
Сейчас попробую в несколько потоков.
Железо у меня на текущем ПК ниже среднего - 4 ядра Xeon на сокете 775 и 8 гбайт памяти.
 
Большую часть обсуждений именно ты и начал))

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

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

Сколько было радости, когда обновился и все потоки всех проектов просто в ноль легли! Нихрена не заработало, то что ранее было в принципе стабильно.
Вот и решаю проблемы по мере поступления... И не оставляю надежды что решение проблем таки перерастет в решение задач, ранее себе поставленных.
ну добро пожаловать в клуб борцов за стабильность :)
чот меня тоже не радует последняя обнова. щас попробую для сравнения тот же шаб прогнать через 7.1.2.0. а то я поправлял уже на 7.1.3.0 и чот прям куча вылетов на хроме.
 
@sergodjan66
+ Добавлена возможность остановить выполнение C# кода. При нажатии Стоп, если в течении 5 секунд выполнение на закончится, появится диалоговое окно с предложением прервать C# код.
Я правильно понимаю что теперь код в C# экшене выполняется в отдельном потоке?
И выполнение кода прерывается с помощью CancellationToken.
 
В ЗП в 1 поток только что закончился прогон в 100 итераций цикла, все отлично.
Сейчас попробую в несколько потоков.
Железо у меня на текущем ПК ниже среднего - 4 ядра Xeon на сокете 775 и 8 гбайт памяти.
Возможно надо наоборот чтобы полностью был свободный проц.
Вот немного переделал тестовый шаблон. Надо запускать на полностью свободном проце.
Что возникает.
1. Случай когда вкладки открываются не в том порядке, что написано в коде, а как-то случайно и активируется не та, что надо. Или вкладка, где загружается контент закрывается командой с прошлого кубика. Хотя на загрузку активной вкладки стоит if (tab.IsBusy) tab.WaitDownloading();
У меня на 5 попытке выскочило. Может иногда и не выскакивать по моим наблюдениям, а если открыть ПМ и закрыть и опять запустить - выскакивает.
Какие-то гонки потоков идут который надо именно что ловить.
54836

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

Вложения

Поставьте цикл не 10 раз, а 100 раз
Мой ПК не выдержит 10+, прогнал цикл на 100 итераций в 5 потоков, при этом сожрало почти все ресурсы (процессор и память), в процессе работы случились краши при перезагрузке инстанса 3 раза, думаю что это случилось в особо пиковые моменты потребления ресурсов.
 
@sergodjan66

Я правильно понимаю что теперь код в C# экшене выполняется в отдельном потоке?
И выполнение кода прерывается с помощью CancellationToken.
Да, в отдельном потоке, но прерывается через thread abort.
 
  • Спасибо
Реакции: Moadip
Мой ПК не выдержит 10+, прогнал цикл на 100 итераций в 5 потоков, при этом сожрало почти все ресурсы (процессор и память), в процессе работы случились краши при перезагрузке инстанса 3 раза, думаю что это случилось в особо пиковые моменты потребления ресурсов.
Попробуйте еще новый шаблон по технологии что в прошлом посте писал.
Тут я увидел 2 варианта поведения
1. Когда проц мало загружен
-Глючат табы что создаются и закрываются беспорядочно без учета времени загрузки
2. Когда загрузка проца резко меняется.
-Тогда инстансы могут падать окончательно


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

54847

54848

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

Вот блин, а у меня тоже ThreadStatic кое где используется..... правда до критов не дошло. Печально. Придеться серьезно шерстить код который исправно работал до этого.
 
Обмениваться объектами между экшенами можно было двумя способами или через project.context или через статическое поле с атрибутом ThreadStatic.
Теперь про второе можно забыть.
Тоже заметил такое, спасибо за объяснение почему так, печально.
 
Staff
Предлагаю в зенке ввести обязательные действия с инстансом на уровне самой зенки
1. до изменения чего-то там через инстанс запоминать предыдущее состояние и проверять в конце вообще произошло ли изменение, то, которое возможно произвести? Если инстанс при этом решил упасть, то делать 2ой трай на действие на фоне запомненного состояния.
2. ввести таймер по ожиданию выполения команд в инстансе. Не тот, который в настойках как бы есть, а тот, который сможет определить подвисший инстанс. И чтобы его можно было либо восстановить на запомненном состоянии, либо хотя бы ошибку дать. Чтобы избежать часами висящего инстанса и как бы выполняющегося проекта.
3. Разобраться почему команды работы с инстансом могут возвращать пустые значение. На примере выше показывал. Тут надо определится. Если контента на странице нет, то команда не должна выполнятся успешно. А если как бы есть и находит, то откуда тогда пустое значение?

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

А потому что инстанс то не прогрузился, то умер, то ХЗ что с ним вообще творится
 
Последнее редактирование:
По поводу ThreadStatic:
  1. аттрибут [ThreadStatic] как работал в постере так и продолжает работать, там единый поток.
  2. да в отладке сломали, но починим, в ближашем релизе, будет единый поток для работы C# кода, код не будет перескакивать между потоками как сейчас, это позволит использовать аттрибут [ThreadStatic], но если вы прервете отладку, то поток персоздастся. Собсвенно так было и раньше только приходилось перезагружать PM и терялось вообще все, а не только ThreadStatic поля.
 
  • Спасибо
Реакции: Moadip и ZX
Вношу предложение

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

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

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


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

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