Висячие сессии 1С 8.2

1. nikdn 30.11.11 07:41 Сейчас в теме
Серверный вариант. Стоит SQL 2008. Платформа 8.2.14.533
Постоянно возникает проблема, когда пользователи из базы выходят, а сессия остаётся висеть. Блокировка устнаовки соединений и перезагрузка сервера не помогает, только помогает завершение из консоли. Подскажите, пожалуйста, как можно решить данную проблему?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. adanil 4 30.11.11 07:52 Сейчас в теме
перед созданием бэкапа я запускаю обработку, которая сама чистит соединения с базой.
Можно запустить эту обработку как задание.
3. nikdn 30.11.11 07:56 Сейчас в теме
Дело даже не в том чтоб архив создать, а освободить лицензии на ключе защиты Альфа-Авто
4. adanil 4 30.11.11 07:59 Сейчас в теме
эту обработку можно вызывать в любой момент. можно после выхода из базы прописать ее выполнение на очистку соединения. текст могу выложить.
З.Ы. Платформа 8.2.14 не совсем удачная как мне кажется 8.2.13 лучше, имхо.
5. nikdn 30.11.11 08:08 Сейчас в теме
Будь добр, выложи текст обработки.
6. adanil 4 30.11.11 08:15 Сейчас в теме
СоединениеНомер = НомерСоединенияИнформационнойБазы();
СоединениеПараметры = Инт_Строка.СтрокаСоответствие(СтрокаСоединенияИнформационнойБазы());
СерверПортИмя = СоединениеПараметры.Получить("Srvr");
БазаИмя = НРег(СоединениеПараметры.Получить("Ref"));
Соединитель = Новый COMОбъект("V82.COMConnector");
РазделительПозиция = Найти(СерверПортИмя, ":");
Если РазделительПозиция > 0 Тогда
СерверИмя = Лев(СерверПортИмя, РазделительПозиция - 1);
СерверКластерПорт = Число(Сред(СерверПортИмя, РазделительПозиция + 1));
Иначе
СерверКластерПорт = Соединитель.RMngrPortDefault;
КонецЕсли;
СерверАгентИмя = СерверИмя;
Если ЗначениеЗаполнено(Вход_СерверАгентПорт) Тогда
СерверАгентИмя = СерверАгентИмя + ":" + Инт_Строка.ЧислоСтрока(Вход_СерверАгентПорт);
КонецЕсли;
Агент = Соединитель.ConnectAgent(СерверАгентИмя);
Кластеры = Агент.GetClusters();
Для Каждого Кластер Из Кластеры Цикл
Если Кластер.MainPort <> СерверКластерПорт Тогда
Продолжить;
КонецЕсли;
Агент.Authenticate(Кластер, Вход_КластерАдминистратор, Вход_КластерАдминистраторПароль);
Процессы = Агент.GetWorkingProcesses(Кластер);
Для Каждого Процесс Из Процессы Цикл
КластерСоединение = Соединитель.ConnectWorkingProcess("tcp://" + СерверИмя
+ ":" + Инт_Строка.ЧислоСтрока(Процесс.MainPort));
КластерСоединение.AddAuthentication(Вход_Администратор.ПользовательИмяИБ, Вход_АдминистраторПароль);
ИБОписание = КластерСоединение.CreateInfoBaseInfo();
ИБОписание.Name = БазаИмя;
Соединения = КластерСоединение.GetInfoBaseConnections(ИБОписание);
Для Каждого Соединение Из Соединения Цикл
Если Соединение.ConnId <> СоединениеНомер Тогда
КластерСоединение.Disconnect(Соединение);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
7. ---MutaboR--- 30.11.11 08:17 Сейчас в теме
Если нет нужды сохранять сессии, можно сделать автозавершение сессий по отключению.
Но у меня появилась из-за этого другая проблема, иногда, при входе в 1с вылазит ошибка с ключем, приходиться отказываться от установки и перезапускать сеанс, далее норм
8. nikdn 30.11.11 08:26 Сейчас в теме
У меня уже стоит автозавершение сессий 43200 сек.
9. nikdn 01.12.11 12:44 Сейчас в теме
У кого-нибудь есть еще варианты?
10. Notorius 02.12.11 13:26 Сейчас в теме
Блин такая же проблема, такой же сервер, и тоже после обновления на 8.2.15.533, звонили в 1с они сказали что у них типа всё нормально, видимо пока все не заколебут их с этой проблемой так и не исправят
11. vartos 02.12.11 13:33 Сейчас в теме
проблема продолжается и на 8.2.14.540
12. VladKir 02.12.11 13:50 Сейчас в теме
Можно сделать по аналогии с SAP_Logon: взять обработку выше, модифицировать и обрубать сеансы, активность которых была час назад и более.

Но неизвестно, как себя поведет сия обработка, если будет какое-нибудь закрытие: часов 6 будет выполняться, активность последняя как раз 6 часов назад и останется. Нужно проверять.
13. Arox 4 06.12.11 12:25 Сейчас в теме
у меня пользователи не корректно выходят из терминального приложения 1С, и висят как мертвые души, при заходе снова подключаются, но уже сессия другая. и смотришь журнал активных пользователей - куча мертвых душ... и где то среди них есть один реальный рабочий сеанс...
14. kata2 06.12.11 13:31 Сейчас в теме
Отключайте все лишнее
15. Temniy 19 07.12.11 22:25 Сейчас в теме
Решение данной проблемы описано на диске ИТС
20. S_Marina 12.12.11 09:57 Сейчас в теме
(15) Temniy, Не нашла на диске ИТС этого момента.
27. soda 09.04.14 18:53 Сейчас в теме
(15) Temniy, Вот человеку весь диск ИТС прочитать надо?
16. Temniy 19 07.12.11 22:25 Сейчас в теме
Проблема с принтерами
17. Borunmeert 9 07.12.11 23:04 Сейчас в теме
СоединениеНомер = НомерСоединенияИнформационнойБазы();
СоединениеПараметры = Инт_Строка.СтрокаСоответствие(СтрокаСоединенияИнформационнойБазы());
СерверПортИмя = СоединениеПараметры.Получить("Srvr");
БазаИмя = НРег(СоединениеПараметры.Получить("Ref"));
Соединитель = Новый COMОбъект("V82.COMConnector");
РазделительПозиция = Найти(СерверПортИмя, ":");
Если РазделительПозиция > 0 Тогда
СерверИмя = Лев(СерверПортИмя, РазделительПозиция - 1);
СерверКластерПорт = Число(Сред(СерверПортИмя, РазделительПозиция + 1));
Иначе
СерверКластерПорт = Соединитель.RMngrPortDefault;
КонецЕсли;
СерверАгентИмя = СерверИмя;
Если ЗначениеЗаполнено(Вход_СерверАгентПорт) Тогда
СерверАгентИмя = СерверАгентИмя + ":" + Инт_Строка.ЧислоСтрока(Вход_СерверАгентПорт);
КонецЕсли;
Агент = Соединитель.ConnectAgent(СерверАгентИмя);
Кластеры = Агент.GetClusters();
Для Каждого Кластер Из Кластеры Цикл
Если Кластер.MainPort <> СерверКластерПорт Тогда
Продолжить;
КонецЕсли;
Агент.Authenticate(Кластер, Вход_КластерАдминистратор, Вход_КластерАдминистраторПароль);
Процессы = Агент.GetWorkingProcesses(Кластер);
Для Каждого Процесс Из Процессы Цикл
КластерСоединение = Соединитель.ConnectWorkingProcess("tcp://" + СерверИмя
+ ":" + Инт_Строка.ЧислоСтрока(Процесс.MainPort));
КластерСоединение.AddAuthentication(Вход_Администратор.ПользовательИмяИБ, Вход_АдминистраторПароль);
ИБОписание = КластерСоединение.CreateInfoBaseInfo();
ИБОписание.Name = БазаИмя;
Соединения = КластерСоединение.GetInfoBaseConnections(ИБОписание);
Для Каждого Соединение Из Соединения Цикл
Если Соединение.ConnId <> СоединениеНомер Тогда
КластерСоединение.Disconnect(Соединение);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
18. makelia 07.12.11 23:40 Сейчас в теме
На 8.2.13 та же проблема.
19. sergsd15 3 09.12.11 03:53 Сейчас в теме
выйти из сервера через меню Пуск
21. Temniy 19 12.12.11 10:53 Сейчас в теме
Статья находится в разделе Методическая поддержка 1С предприятие 8 - администрирование - особенности использования 1С предприятие при работе на терминальном сервере
24. S_Marina 12.12.11 13:31 Сейчас в теме
22. nsm 12.12.11 11:18 Сейчас в теме
Вот это кусок
СоединениеНомер = НомерСоединенияИнформационнойБазы();
СоединениеПараметры = Инт_Строка.СтрокаСоответствие(СтрокаСоединенияИнформационнойБазы());
СерверПортИмя = СоединениеПараметры.Получить("Srvr");
БазаИмя = НРег(СоединениеПараметры.Получить("Ref"));
Соединитель = Новый COMОбъект("V82.COMConnector");
РазделительПозиция = Найти(СерверПортИмя, ":");
Если РазделительПозиция > 0 Тогда
СерверИмя = Лев(СерверПортИмя, РазделительПозиция - 1);
СерверКластерПорт = Число(Сред(СерверПортИмя, РазделительПозиция + 1));
Иначе
СерверКластерПорт = Соединитель.RMngrPortDefault;
КонецЕсли;
СерверАгентИмя = СерверИмя;
Если ЗначениеЗаполнено(Вход_СерверАгентПорт) Тогда
СерверАгентИмя = СерверАгентИмя + ":" + Инт_Строка.ЧислоСтрока(Вход_СерверАгентПорт);
КонецЕсли;

наводит на мысль, что в ИТС всё подробно описано.
23. Синицын 12.12.11 11:38 Сейчас в теме
Уменьшить тайм-аут завершения процесса SplWOW64.exe. Для этого следует в значение системного реестра SplWOW64TimeOut установить в значение 1 (при отсутствии значения его следует создать с типом DWORD (32 бита)).
Ветка реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print
Добавить процесс SplWOW64.exe в список процессов, завершаемых при завершении терминальной сессии. Для этого следует значение системного реестра SPLWOW64.EXE установить в значение 0 (при отсутствии значения его следует создать с типом DWORD (32 бита)).
Ветка реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal­Server\SysProcs
25. 7OH 69 04.12.13 13:18 Сейчас в теме
А можно как-то от текущего пользователя\имени аутентификацию пройти ?
Все входят под доменной аутентификацией, по этому имя мы получить из базу можем, а вот пароля нет.
26. Синицын 09.04.14 18:42 Сейчас в теме
Может при повторном подключении к терминальному серверу у них создаётся новая терминальная сессия вместо подключения к старой, либо действительно принтеры... - у себя однажды решил описанным на ИТС способом.
28. websamson 306 12.07.18 07:25 Сейчас в теме
Возникла проблема с тем, что зависали сеансы без рабочего процесса. Сделал так:


Для Каждого Кластер Из Кластеры Цикл 
		Агент.Authenticate(Кластер, "", ""); 
		Сеансы = Агент.GetSessions(Кластер);
		Для Каждого Сеанс Из Сеансы Цикл
			Если Сеанс.process = Неопределено Тогда
				Агент.TerminateSession(Кластер, Сеанс);
				Сообщить("Удалил сессию: " + Сеанс.UserName);
			КонецЕсли;	
		КонецЦикла; 
КонецЦикла;
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот