Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:14

Удаление сеансов с помощью консольной утилиты RAC

Автор Yrich, 05 мая 2016, 13:56

0 Пользователей и 1 гость просматривают эту тему.

Yrich

Здравствуйте товарищи эксперты, подскажите пожалуйста новичку, существует ли способ завершать все существующие на момент времени сессии пользователей на сервере с помощью консольной утилиты RAC? Т.е. интересует метод удаления не по одной сесии вручную, с указанием её ID, а сразу все активные сеансы?

LexaK

а если использовать утилиту: Администрирование серверов 1С Предприятия
там в свойствах базы есть галки блокировка начала сеансов и блокировка регламентных заданий.
Выставляете их и через пару минут все пользователи отключаются от 1С, некоторые сеансы остаются их отдельно можно удалить/закрыть
если помогло нажмите: Спасибо!

Yrich

Дело в том, что данную процедуру необходимо выполнять автоматически, скриптом, ночью, без участия администратора. Причиной данной потребности послужили зависшие сессии пользователей, которые на утро подвешивают намертво сервер. Скриптом vbs пытался решить проблему, но данный метод работает почему-то нестабильно. Представители 1С данную проблему официально отрицают, но всё же посоветовали воспользоваться средствами утилиты RAC для автоматического завершения сессий. Вот  только инструкции как именно это сделать, кроме встроенного в утилиту help, я нигде не нашёл, поэтому и обратился на данный форум.

LexaK

а если в самом конфигураторе вставить пару строк Обработчик ожидания и ЗавершитьРаботуСистемы ?
скажем в 23:00 все пользователи дружно покидают систему!
кому надо запустит по новой (до следующих 23:00), или настроить РС.Невыкидываемых пользователей.

еще как вариант есть куча команд по управлению сеансами и подключениями из самой 1С
пример:
WorkingProcessConnection.Disconnect(Соединение);
АгентСервера.TerminateSession(глКластер, Сеанс);
лкСоединения = АгентСервера.GetInfoBaseSessions(глКластер, глБазаАгента);
можно конечно из них сделать процедуру/регламентное задание которое по расписанию будет выкидывать пользователей, но это гораздо сложнее п.п.1

если помогло нажмите: Спасибо!

xdto

Как насчет настройки перезапуска рабочего процесса
Всех пользователей скинет и зависших процессов удалит

Yrich

Цитата: xdto от 05 мая 2016, 17:32
Как насчет настройки перезапуска рабочего процесса
Всех пользователей скинет и зависших процессов удалит

В консоле администрирования серверов 1С Предприятия, установил следующие параметры кластера:
1. Интервал перезапуска - каждые 43200 сек. (было 86400 сек.)
2. Выключенные процессы останавливать через - 60 сек. (было 0 сек.)

Интервал перезапуска — время через которое процесс будет принудительно перезапущен. Перед завершением работы процесса запускается новый процесс, на который передаются все соединения, и только тогда будет завершена работа старого процесса.

Параметр "Выключенные процессы останавливать через" - определяет время, через которое будет остановлен рабочий процесс, помеченный как выключенный.

Вот только думаю, а не будет ли при этом успешно передано зависшее соединение на новый процесс, как 1С определит зависшее соединение или нет? Посмотрим что из этого получиться. Если кто-то знает заранее, буду благодарен)



Добавлено: 10 мая 2016, 12:47


Цитата: LexaK от 05 мая 2016, 17:26
а если в самом конфигураторе вставить пару строк Обработчик ожидания и ЗавершитьРаботуСистемы ?
скажем в 23:00 все пользователи дружно покидают систему!
кому надо запустит по новой (до следующих 23:00), или настроить РС.Невыкидываемых пользователей.

еще как вариант есть куча команд по управлению сеансами и подключениями из самой 1С
пример:
WorkingProcessConnection.Disconnect(Соединение);
АгентСервера.TerminateSession(глКластер, Сеанс);
лкСоединения = АгентСервера.GetInfoBaseSessions(глКластер, глБазаАгента);
можно конечно из них сделать процедуру/регламентное задание которое по расписанию будет выкидывать пользователей, но это гораздо сложнее п.п.1

Звучит многообещающе, жаль только я не программист, а всего лишь админ) А можно это сделать, не внося изменений в типовую конфигурацию, т.е. не снимая конфигурацию с поддержки?
Добавлено: 11 мая 2016, 08:07


Вот такой ещё вариант сейчас тестирую, пока что всё работает нормально:
Исполняемый файл .cmd cо следующим содержанием запускаю стандартным планировщиком заданий windows:

net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
ping localhost -n 60 >nul
TASKKILL /F /IM "rphost.exe"
TASKKILL /F /IM "rmngr.exe"
ping localhost -n 60 >nul
cd "c:\Program Files\1cv8\srvinfo\reg_1541\snccntx859f6533-de66-4255-a65f-1818453100c8"
del /F /S *.dat
ping localhost -n 60 >nul
net start "1C:Enterprise 8.3 Server Agent (x86-64)"

Команда "ping" используется просто для минутной паузы между командами, TASKKILL завершает принудительно процессы, если они не завершились автоматически,
команда "del" очищает кэш сеансов в папке snccntx*.


Теги: RAS-сервер 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск