Имя: Пароль:
1C
1С v8
Доступ к агенту сервера
0 lEvGl
 
гуру
08.11.22
09:40
Доброго дня
Подскажите, можно ли получить доступ к сеансам пользователей на сервере (с целью удаления неактивных) Без КОМконнектора? По выбранному варианту реализации нужно проверить при входе в базу наличие сеансов для текущего пользователя текущей базы и удалить те, что были подняты раньше. Такой вариант подразумевает безусловный подъем коннектора, что занимает время, чего не хотелось бы.
1 lEvGl
 
гуру
08.11.22
09:43
платформа 8.2.19
2 Kassern
 
08.11.22
09:43
(0) А как вы предлагаете удалять сеансы без коннектора?
3 lEvGl
 
гуру
08.11.22
09:45
(2) я и не предлагаю, а спрашиваю, есть ли варианты)
4 Kassern
 
08.11.22
09:49
(3) имхо придется все равно цепляться к кластеру по ком и управлять сеансами. По поводу активный/не активный сеанс вы вряд ли легко определите. Человек может отойти на несколько часов от компа с открытой 1ски, а сеанс его будет активным, так как 1ска оперативно отвечает на запросы кластера.
5 Dmitrii
 
гуру
08.11.22
09:53
https://its.1c.ru/db/v8322doc#bookmark:cs:TI000000257
АдминистрированиеСеанс (AdministrationSession).
ЗавершитьСеанс (TerminateSession).
Синтаксис:
ЗавершитьСеанс(<СообщениеОбОшибке>)
Параметры:
<СообщениеОбОшибке> (необязательный).
Тип: Строка.
Сообщение для пользователя, которое содержит причину завершения сеанса.
Описание:
Удаляет сеанс. Попытка обращения к кластеру серверов от имени удаленного сеанса вызывает исключение.
Доступность: Тонкий клиент, сервер, толстый клиент, интеграция.
Использование в версии: Доступен, начиная с версии 8.3.14.

https://its.1c.ru/db/v8322doc#bookmark:adm:TI000001112
6 lEvGl
 
гуру
08.11.22
09:56
(4) или так: для начала понять, есть ли то, что удалять, чтобы без КОМа, и если есть то только потом его поднимать. условия необходимости удаления сеанса тут я упрощаю, есть набор условий (именно активность - согласен, косвенный признак)
7 Kassern
 
08.11.22
09:58
(5) "Использование в версии: Доступен, начиная с версии 8.3.14. "-> (1) платформа 8.2.19
8 lEvGl
 
гуру
08.11.22
09:58
(5) да видел, но с 8.3.14, прогресс в этом направлении радует конечно, но не всегда
9 lEvGl
 
гуру
08.11.22
10:07
(5) интересно.. если из базы на 8.2 через сервис отдать данные запускаемого сеанса в базу на 8.3 (сервер приложения есть обоих версий) и там анализировать и удалять.. взлетит? в (5) это быстро работает? имею ввиду, не поднимается ли там тот же ком, только скрыто/неявно, сервером приложения?
10 Kassern
 
08.11.22
10:12
(9) А вы видите в данном методе возможность указать конкретный сеанс? Да даже если и была возможность, имхо не взлетело бы. Вы бы передали данные сеанса в другую базу, а ей потом что делать, когда у нее нет доступа в кластеру платформы 8.2?
11 Мимохожий Однако
 
08.11.22
10:13
(0) Установи консоль администрирования сразу же, чтобы не устанавливать по мере необходимости. На мой взгляд, остальное - не оптимально
12 lEvGl
 
гуру
08.11.22
10:21
(10) н да..
(11) чем поможет консоль, не понял, руками удалять?
13 lEvGl
 
гуру
08.11.22
10:26
(11) запускать ее батником с параметрами или что?
14 PLUT
 
08.11.22
10:26
(12) если сеанс "завис" наглухо, то из консоли может не удаляться, так же как и "зависшие" фоновые задания.

обычно смотришь глазками PID рабочего процесса этого протухшего сеанса, потом в диспетчере задач по PID находишь rphost и его килляешь нахрен. с убийствой рпхоста и протухший сеанс аннигилируется
15 PLUT
 
08.11.22
10:28
+(14) это если консоль администрирования клистера 1С не помогает, а агента сервера 1С нельзя ребутать, ибо работают люди...
16 Kassern
 
08.11.22
10:33
(14) (15) Ага, только на этом рпхосте могут быть еще Nое количество работающих юзверов))
17 Мимохожий Однако
 
08.11.22
10:35
(12) Конечно, руками. Я не представляю ситуацию, когда процесс убивания настолько часто нужен, чтобы этот процесс автоматизировать.
18 Kassern
 
08.11.22
10:38
(17) Встречал на одном оптовом предприятии следующую реализацию: каждую ночь убивались все сеансы и перезагружалась служба 1с, вроде еще кэш чистили и все это по крону отрабатывало. На утро никаких зависших сеансов, все знают, что оставлять включенную 1ску не надо.
19 PLUT
 
08.11.22
10:40
(18) в настройках раб.процессов можно настроить интервал перезапуска и ограничение по памяти, чтобы ребутался? тогда все активные сеансы мигрируют на другие менее загруженные рпхосты и чисто конкретный рпхост ребутается
20 Kassern
 
08.11.22
10:44
(19) " тогда все активные сеансы мигрируют на другие менее загруженные рпхосты" - а вы даете 100% гарантию, что вводимые данные не пропадут у юзвера, когда ему рпхост грохнут и он успешно перекинется на новый рпхост?)
21 lEvGl
 
гуру
08.11.22
10:44
(14) да, но это другая часть проблемы. первый вариант - когда из консоли можно прибить сеанс, но что бы не руками там лазить, т к известно становится что какой то из сеансов повис, только тогда, когда появляются явные проблемы, вроде блокировки документов, таблиц и тд
+ возможность плодить сеансы пользователем тоже надо убрать

возможный вариант, как считаю: при входе в базу смотрим наличие сеансов от этого пользователя/компа в базе и если есть более "старшие" сеансы, то пробуем их удалить, с оповещением пользователя конечно, типа "у вас уже запущено, если хотите войти в этом окне, тогда другое будет закрыто автоматически, да?". Удаляем предыдущие. Да, могут быть глухие сеансы, но это уже другая часть вопроса, о которой можно так же админам кинуть на почту, что есть сеанс, который удалить не вышло, подумайте об этом. И они уже перегрузят Агента (если только кто нибудь не подскажет, что с такими сеансами кроме перегрузки службы можно еще сделать)

(17) у нас контроль запуска базы по несколько раз + попробовать не допустить зависших
22 Kassern
 
08.11.22
10:45
(20) в общем я к тому, что лучше глянуть кто еще на этом рпхосте висит и предупредить этих юзверов, чтобы сохранили свои данные
23 lEvGl
 
гуру
08.11.22
10:47
(18)(19) у нас круглосуточная работа. грохать рпхост не вариант, да и потом - ни кто не гарантирует, что свежий сеанс не может повиснуть через 10 минут после начала
24 Kassern
 
08.11.22
10:48
(23) А из-за чего у вас сеансы виснут? Сколько у вас пользователей одновременно работает?
25 lEvGl
 
гуру
08.11.22
10:49
(24) около 500, я думаю что скл косячит, админы так не считают
26 Kassern
 
08.11.22
10:50
(25) У вас КОРП лицензия я надеюсь?)
27 lEvGl
 
гуру
08.11.22
10:56
(26) да. админы все время переоформляют то одно то другое, актуальной ситуации не знаю, проблемы тоже есть. это еще один из вопросов, который станет проще, если дубли сеансов предупредить
28 rudnitskij
 
08.11.22
11:01
(21) с учетом того, что разработчики типовых баз любят использовать подписки на события - вряд ли вы программно отличите открытый сеанс от глухого
29 lEvGl
 
гуру
08.11.22
11:08
(28) да, понятно, поэтому нужно бороться с причиной появления висячих сеансов. при входе посмотрели, удалили все, кроме текущего. если повис, то пользователь перезапускает и опять смотрим/удаляем. глухих не удалили - оповестили заинтересованных.
30 lEvGl
 
гуру
08.11.22
11:20
(29) + то есть отдать на откуп пользователю

все это хорошо, напрягает только время подъема кома к агенту
31 Kassern
 
08.11.22
11:22
(30) Вам бы по уму разобраться в причине зависания клиентов, а так это просто очередной костыль...Есть возможность протестировать работу на новой платформе? Может релиз глючный под такую нагрузку?
32 lEvGl
 
гуру
08.11.22
11:35
(31) хрен знает... вот ситуация: открываю док, меняю - "объект заблокирован, сеанс номер.., пользователь..". Тут же + - понимаю, что внешняя софтина, которая грузит данные в базу напрямую ничего не грузит. Ковыряюсь что бы понять почему, ни виходит, ни панятна. Ладно, разберемся сначала с псевдосеансом... Открываю активных пользователей, там нет такого сеанса. Консоль, нашли, прибили - документ отпустило, софтина тоже заработала. То есть блокировка записей/таблиц скл, причем сеансом, который к таблицам внешней софтины отнощения не имеет. С ними собственно на запись только она и работает. Внимание, вопрос!?))
33 Kassern
 
08.11.22
11:43
(32) Значит нужно с блокировками вопрос решать, у вас там управляемые блокировки?
34 lEvGl
 
гуру
08.11.22
11:50
дело в том, что этой проблеме с повисшими сеансами много лет, сколько помню всегда это было, то так виснут то так, то еще как то, разные варианты. Уже устойчивый стереотип, что связка сервер приложения + скл так и работает, это норма(с). Раньше были другие платформы, старшие, теперь эта, но проблемы идентичные. Хотя как вариант может предложить админам поставить посвежее 8.2. но сомнительно как то, что поможет.
пс. подписки/кривые коды вроде циклов без конца не рассматриваем - изучали, смотрели, криминала не найдено. При этом в момент висяка на скл (а бывает и такое, SDBL и остальное) админ присылает склный запрос и говорит - вот повесивший сервер запрос, смотрим - банальная выборка, простейший запрос. Да, данных в выборку попадает много, но с этим ничего не сделаешь, реальные данные, реальный "полезный" объем. А значит что? А значит производительность железа страдает. Админ отпирается, что на этом железе все должно летать, у вас код кривой. Даже как то предъявил, в контексте там тратата, спор да дело "ага, понятно - кривая реализация бегущей строки". Бегущей строки, Карл! кривая реализация млять. Криво нажали галку "БС" в свойствах надписи, ага. Ладно, лирика пошла.

(33) автоматический и управляемый
35 Kassern
 
08.11.22
13:09
(34) "банальная выборка, простейший запрос" - выборка-то может быть банальная, только таблица в выборке уже залочена другим сеансом, который возможно что-то писал в эту таблицу через какое-нибудь ком соединение и повис. У вас вообще как с обменами через ком, популярная тема?
36 lEvGl
 
гуру
08.11.22
15:01
(35) это не про повисший сеанс, а про тормоза на скл. это приводит к "ошибка блокировки данных SDBL" на скл.
обмены идут, в основном сервисы, но есть некоторый функционал оставшийся на комах.

да не озадачивайтесь, слишком много разного функционала, гадать с поиском причин не получится. Явного (вопиющего) косяка быть не должно, все более менее грамотные - и админы и проги
37 lEvGl
 
гуру
08.11.22
15:12
+ 36 да, ошибка блокировки может как следствие привести к потухшему сеансу, но если его не трогать(консоль, ctrl/alt/del на клиенте или еще как), то он отвиснет когда сервер просрется и выдаст результат. как мне кажется это только вопрос производительности сервера. нужен контроль количества сеансов от одного и того же пользователя ввиду подчистки предыдущих его сеансов (повисших и неповисших, нех одно и то же по несколько раз запускать), контроля использованных лицензий
38 Kassern
 
08.11.22
16:14
(37) "то он отвиснет когда сервер просрется и выдаст результат" - не факт, может быть таймаут по истечению которого просто вывалится с ошибкой мол конфликт блокировок и ошибка скуля.
39 lEvGl
 
гуру
08.11.22
19:11
(38) ну да, или так. тем не менее сеанс останется живой
40 lEvGl
 
гуру
09.11.22
09:48
в целом тут КОМ работает не так медленно, пойдет