04.08.2020, 11:34 | #1 |
Участник
|
Рабочие сессии в Ax2012
Привет всем.
Вопрос: 2012-я аксапта при работе обычных пользователей очень часто открывает дополнительные сессии с типом "Рабочий". При этом для конкретного пользователя может не быть открыто ни одной такой сессии, а может быть открыто несколько. Суммарно получается что при 100 работающих пользователях у них открыто еще около 50 сессий с типом Рабочий. В нашем случае 99 % таких сессий открывается на пакетном аосе. Но для меня, например, открыта еще парочка на обычном пользовательском аосе, на которым пакеты вообще отключены. Т.е. это не пакеты да и мы точно знаем что пользователи их не запускают и в пакетных заданий не видно пакетов которые могли бы породить эти сессии. Что же это ? Опросил коллег и знакомых, никто толком не знает. Говорят что для 2012-й это нормально и всегда так было. Но интересно что же это, зачем аксапта открывает эти сессии и что они делают. Кто знает ? |
|
|
За это сообщение автора поблагодарили: trud (1). |
04.08.2020, 16:12 | #2 |
Участник
|
Думаю, что это галка - Выполнять бизнес-операции в CIL в настройках пользователя, часть кода в работает в CILе в UI интерфейсе, если активирована эта галка.
Все ли такие сессии не знаю. Я провёл такой эксперимент (создание строк в форме разноски покупки работает в СIL): 1. При снятой галке - открыл форму разноски отборочной по покупке, разнёс отборку, сессии с типом рабочий не было. 2. Активировал галку - открыл форму снова - в результате появилась вторая сессия с типом Рабочий.
__________________
Sergey Nefedov Последний раз редактировалось SRF; 04.08.2020 в 16:17. |
|
04.08.2020, 16:12 | #3 |
Участник
|
Интерестный вопрос - вообще у меня было понимание что это пул сессий созданых классом Connection(т.е. при выделение номерных серий и подобного). АХ их не закрывает в процессе. Это приводит к таким эффектам - что к примеру иногда в базе tempdb создаются тысячи временных таблиц
|
|
|
За это сообщение автора поблагодарили: Raven Melancholic (2). |
04.08.2020, 16:58 | #4 |
Moderator
|
Цитата:
1. Аксапта в целом повторно использует открытые SQL-соединения. Соединение, которое никому не пригодилось, после некоторого таймаута закрывается. При этом для оракла таймаут по умолчанию довольно большой (30 секунд, насколько я помню), а для сиквела - маленький (типа секунда). Так было сделано из за того, что в оракле, открытие нового соединения было довольно дорогим и занимало секунды 2-3. Не уверен что этот механизм пережил переход на DAX2012, в которой поддержку оракла выкосили. 2. Созданные инстанцы tempDB tables опять таки повторно используются и удаляются только в момент останова AOS. При этом эти инстанцы к сесии (которая вполне может быть закрыта) не привязаны, поскольку с точки зрения SQL Server, это не временные таблицы, а самые обычные таблицы в БД TempDB, которые вполне могут пересекать границы соединения. Оба эти механизма интересны и достойны обсуждения, но, как мне кажется, к вопросу топик-стартера отношения не имеют. Там скорее всего и вправду завязки на серверные сесии, которые код в CIL исполняют. (Кстати - я так подозреваю что микрософт сделал такие странные "временные таблицы которые на самом деле не временные", как раз для того чтобы таблицы можно было передавать между нормальным соединением пользователя и теми соединениями, которые из за CIL порождаются). |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
04.08.2020, 18:09 | #5 |
Участник
|
|
|
04.08.2020, 19:42 | #6 |
Участник
|
Я пока склоняюсь к мнению trud.
Есть операции, которые открываются в отдельном соединении, большинство из них известно. Есть подозрение, что выделение номерных серий (а оно явно делается в отдельном соединении) как раз и делает дополнительные сессии. Конечно есть и другие действия, приводящие к отдельному соединению ()особенно при работе пакета, WEB сервисов, внешнего вызова BussinesConnector и т.п.). Сейчас попробовал:
|
|
04.08.2020, 19:48 | #7 |
Участник
|
Хотя вроде бы выделение номерной серии открывает отдельный коннект к базе данных, а не к AOS, но факт, как говорится, налицо.
Попробовал вызвать процедуру записи в некоторый лог, запись которого открывает новый коннект к базе данных - тип "Рабочий" не появился. Ага - через пару минут у меня есть два коннекта с типом "Рабочий". Барабашка какая-то. Последний раз редактировалось Raven Melancholic; 04.08.2020 в 19:50. Причина: Появился рабочий коннект |
|
04.08.2020, 20:03 | #8 |
Участник
|
Цитата:
Понятно, когда вызов из Batch сервера - там тоже может быть RunAs. Понятно когда вызов BussinesConnector - он всегда при загрузке AOT такую сессию создавал. Остальные были либо WEB либо что-то там другое (так и не понял как он отличает WEB от другого). Но появление таких коннектов в простом режиме работы пользователей непонятно. |
|
|
За это сообщение автора поблагодарили: trud (1), Logger (3). |