IE2017

Автоматическое удаление спящих сеансов на сервере 1С

Администрирование - Системное

При нештатном завершении клиентской части программы 1С (конфигурации), а также если клиент долгое время не активен, то сеанс на сервере переходит в спящий режим. Далее он должен завершиться через указанное в настройках информационной базы количество времени. Но, к сожалению, это не так. Я столкнулся с проблемой, когда спящие сеансы никогда не завершаются. Настраивал засыпание пассивных сеансов через 600 секунд, а их завершение через 900 секунд. Несмотря на это спящие сеансы висят часами. Это побудило к написанию программы, которая запускается по расписанию планировщиком Windows и удаляет спящие сеансы на всех указанных администратором серверах 1С.

      Поиск решения в сети, к сожалению, не дал нужного результата. Эта тема довольно часто обсуждается на разнообразных форумах, и чаще всего говорится, что вроде бы в каких-то релизах платформы проблема решена. Но в каком именно релизе решена и решена ли точно, мне не удалось выяснить. На моей работе используется 8.3.7.1790. Проблема зависших сеансов в этом релизе есть.

      Приложение реализовано в виде exe файла с названием V8SessionCleaner.exe. При выполнении этого файла с параметром командной строки “auto”, программа читает список серверов из конфигурационного файла, затем последовательно на каждом из этих серверов ищет спящие сеансы и удаляет (завершает) их. 

     Чтобы выполнять периодическое завершение сеансов, необходимо прописать список центральных серверов 1С в конфигурационном файле приложения (V8SessionCleaner.exe.config) и в планировщике создать задачу, которая по расписанию запускает V8SessionCleaner.exe ключом “auto”. Более подробно настройка и использование описаны в инструкции, входящей в дистрибутив.

       Отчет о выполнении и информация о возникших ошибках записывается в системный журнал «Приложение»

     Также можно запускать программу в режиме пользовательского интерфейса. Для этого надо запустить V8SessionCleaner.exe без аргументов командной строки или же с помощью ярлыка, который создается при установке. Этот режим использования программы нужен в большей степени для проверки работоспособности настроек.

На рисунке показан пользовательский интерфейс:

Программа выложена для свободного скачивания. Возможно кому-то еще станет полезной

Скачать файлы

Наименование Файл Версия Размер
V8Cleaner.7z
.7z 1,43Mb
30.08.16
27
.7z 1,43Mb 27 Скачать

См. также

Комментарии
1. Алексей Лажанев (lalexrus) 30.08.16 14:19 Сейчас в теме
2. Talib Gasanov (Gasanov.talib) 14 30.08.16 16:06 Сейчас в теме
(1) lalexrus, Если возникнут сложности или пожелания при использовании, дайте знать
3. Игорь Костюк (foxey) 3 23.12.16 15:42 Сейчас в теме
После перехода на версию 8.3.9.2033 перестало работать.
При попытке обновить список выдает окошко со страшными письменами:
"Необрабатываемое исключение в приложении. При нажатии кнопки "продолжить" приложение проигнорирует ошибку и попытается продолжить работу. При нажатии кнопки "Выход" приложение немедленно завершит работу.
Не удалось получить фабрику класса COM для компонента с CLSID {181E893D-73A4-4722-B61D-D604B3D67D47} из-за следующей ошибки: 80041154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))."

На предыдущей версии 1С работало исправно.
Мне кажется, в версии 2033 (точнее, на одну версию раньше) платформа стала 64-битным приложением. И из-за этого такие вот косяки вылезли...
Как вылечить? Переустановка V8SessionCleaner не помогла...
4. Елена ***** (citicat) 115 23.12.16 15:44 Сейчас в теме
5. Анатолий (aka Любитель XML) 23.12.16 16:27 Сейчас в теме
(3) зарегистрирую com от новой платформы
6. Игорь Костюк (foxey) 3 24.12.16 10:19 Сейчас в теме
(5) А не подскажете, как это делается?
7. Talib Gasanov (Gasanov.talib) 14 26.12.16 19:04 Сейчас в теме

Игорь, "80041154 Класс не зарегистрирован" однозначно говорит о том, что у вас требуемый COM компонент не зарегистрирован. В данном случае речь идет об компоненте "1CV83 COM Connector".
Обычно при корректной установке 1С этот компонент регистрируется. В вашем случае возможно были какие-то проблемы при установке или допущена ошибка.
Чтобы решить проблему надо либо еще раз (поверх установленной) установить 1С, выбрав опцию "исправить" при установке или же САМОСТОЯТЕЛЬНО зарегистрировать "1CV83 COM Connector".
Для самостоятельной регистрации откройте в текстовом редакторе вложенный файл, замените путь к comcntr.dll на ваш (найдите на вашем компьютере файл comcntr.dll и замените путь). Сохраните изменения и запустите командный файл ОБЯЗАТЕЛЬНО нажав правую кнопку мыши и выбрав "Run as administrator".
Если все правильно вы должны увидеть сообщение типа: DllRegisterServer in <путь>\comcntr.dll succeeded. Если у вас Windows русский, то сообщения могут быть на русском.


Прикрепленные файлы:
RegisterV8ComConnector.7z
8. Игорь Костюк (foxey) 3 28.12.16 09:22 Сейчас в теме
(7) Вот смотрите, Талиб.
Ручками провожу регистрацию на сервере: regsvr32 "C:\Program Files\1cv8\8.3.9.2033\bin\comcntr.dll"
Сообщает мне, что регистрация успешно прошла.
Перезапускаю сеанс удаленного рабочего стола, пробую утилитку Вашу и снова та же песенка о незарегистрированном классе.
Может надо сервер перезапускать? Но это возможно только ночью сделать.
А не может быть причиной такой неприятности из-за того, что теперь DLL находится в другой папке? У Вас "Program Files (x86)", у меня "Program Files". Хотя нет, не может быть это причиной.
Update: Ах да, забыл сказать. Я это делаю из-под учётки Администратора.
9. Игорь Костюк (foxey) 3 28.12.16 10:11 Сейчас в теме
Update 2: Попробовал провести восстановление установленной 1С, пришлось перезапустить сервер. Так вот, не помогло...
Все же думаю, что причиной неудач может быть то, что установлен 64-битный клиент.
10. Talib Gasanov (Gasanov.talib) 14 28.12.16 13:48 Сейчас в теме
(9)
игорь,
Надо убедиться, что утилита удаления сеансов запущена на том же компьютере на котором Вы регистрируете comcntr.dll. Если это так и проблемы все равно есть, тогда надо

1.Зарегистрироть comcntr.dll потом в реестре windows поискать по ключу 181E893D-73A4-4722-B61D-D604B3D67D47, найти раздел где регистрирован comcntr.dll и смотреть нет ли там проблем.

что касается 64-битного клиента, то не могу утверждать что проблема в этом. У я программировал утилиту и тестировал как раз на 64-битном Windows.

Вы можете постучаться мне в скайп, если хотите. Так может быстрее получится решить проблему.

Скайп Gasanov2003
11. Talib Gasanov (Gasanov.talib) 14 29.12.16 12:46 Сейчас в теме
Проблема действительно была, связана с тем, что текущая версия утилиты работает только с 32 битным клиентом 1С. Если установить 1С клиент 64, то программа не работает и выдает ошибку описанную Игорем выше.

В ближайшее время выложу 64 битную версию утилиты.
13. Руслан Фасхутдинов (Octopus) 336 28.02.17 08:40 Сейчас в теме
Будет ли реализована возможность завершения конкретной сессии, а не всего списка целиком?
14. Talib Gasanov (Gasanov.talib) 14 28.02.17 23:03 Сейчас в теме
Да, реализую в новом релизе, если это нужная возможность.
Правильно я понимаю, речь идет о возможности завершения выбранной сессии когда программа запущена в режиме пользовательского интерфейса?
15. Руслан Фасхутдинов (Octopus) 336 15.03.17 09:57 Сейчас в теме
(14) Не обязательно, подвиснуть может и конфигуратор. Вопрос вызван следующей ситуацией: сервер с множеством баз, понадобилось убрать "висяки" только одной из них. Кстати, сортировка по колонкам тоже была бы весьма удобна.
16. Evgeniy Nikolaenko (DrBlack) 17 15.03.17 10:06 Сейчас в теме
Столкнулся с аналогичной проблемой, проблему решили с помощью регламентного задания, которое запускается раз в сутки (нам этого достаточно) и грохает все сеансы, вот весь код (актуально для УПП):
Процедура ЗавершениеСеансовПользователей() Экспорт	
	ПараметрыАдминистрированияИБ = СоединенияИБ.ПолучитьПараметрыАдминистрированияИБ();	
	СоединенияИБ.ОтключитьСоединенияИБ(ПараметрыАдминистрированияИБ);	
КонецПроцедуры
...Показать Скрыть

Enjoy :)
Оставьте свое сообщение