Как завершить зависшие сеансы 1С:Предприятия, которые не удаляются стандартными средствами?

Системный администратор 1С v8.3 (Управляемые формы)
← На главную

Зависшие сеансы пользователей в 1С:Предприятии — частая проблема, которая может препятствовать выполнению критически важных операций, таких как обновление базы данных. Стандартные методы завершения сеансов иногда оказываются неэффективными, особенно когда сеанс "завис окончательно" и постоянно появляется снова, блокируя доступ к базе. В таких случаях приходится прибегать к более радикальным мерам, вплоть до принудительного завершения процессов на сервере. Давайте разберем, как мы можем самостоятельно решать эту задачу, минимизируя необходимость обращения к системному администратору.

Выясняем, почему сеансы 1С зависают

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

  1. Некорректное завершение работы: Пользователи часто закрывают программу, нажимая крестик в правом верхнем углу окна, вместо того чтобы использовать опцию «Завершить работу» из меню 1С. Это может привести к тому, что сеанс на сервере не будет корректно закрыт.
  2. Проблемы с производительностью: Недостаток ресурсов на рабочем компьютере или сервере, большой объем обрабатываемых данных, неоптимизированный код конфигурации, избыток второстепенных функций или ошибки в настройках могут стать причиной «зависания» или замедления работы сеанса, приводящего к его некорректному завершению.
  3. Сетевые проблемы: Разрыв или нестабильное соединение с сервером может нарушить обмен данными, в результате чего сеанс перестает отвечать и остается активным на сервере.
  4. Длительные операции: Если пользователь закрывает программу в процессе выполнения длительной операции (например, при формировании объемного отчета или проведении большого пакета документов), сеанс может остаться висящим до завершения или ошибки этой операции на сервере.
  5. Ошибки в коде конфигурации: Программные ошибки в конфигурации могут приводить к «зацикливанию» или некорректному поведению сеанса, препятствуя его нормальному завершению.

Методы завершения зависших сеансов 1С:Предприятия

Рассмотрим различные подходы к завершению зависших сеансов, начиная от стандартных инструментов и заканчивая более глубокими серверными настройками. Мы выясним, какие методы помогают при обычном "выбивании" пользователей, а какие – при "окончательно зависших" сеансах.

  1. Использование консоли "Администрирование серверов 1С:Предприятия"

    Это основной и наиболее часто используемый инструмент для управления кластером серверов 1С. Если у вас есть доступ к этой оснастке, вы можете:

    1. Подключиться к нужному кластеру серверов.
    2. Развернуть узлы, найти нужную информационную базу.
    3. В контекстном меню информационной базы выбрать пункт "Сеансы".
    4. В открывшемся списке сеансов найти нужного пользователя и завершить его сеанс.

    Важно: Как отмечает опыт пользователей, этот метод помогает, если сеанс просто активен или неактивен, но может быть неэффективен, если сеанс "завис окончательно". В таких случаях после завершения сеанс может снова появиться в списке активных. Тем не менее, это первое, что мы должны попробовать.

  2. Внешние обработки для управления сеансами

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

    http://catalog.mista.ru/public/954149/

    Такие обработки обычно:

    1. Позволяют просмотреть список активных пользователей и их сеансов.
    2. Предоставляют кнопку для принудительного завершения выбранного сеанса.
    3. Могут быть настроены на автоматическое завершение неактивных сеансов по расписанию (если это регламентное задание).

    Ограничение: Как и в случае с консолью администрирования, эти обработки могут быть неэффективны против "окончательно зависших" сеансов, которые не реагируют на стандартные команды платформы.

  3. Команда "Активные пользователи" в типовых конфигурациях

    Для некоторых типовых конфигураций (например, УПП 1.3), в режиме "Администрирование" может быть доступна команда "Активные пользователи". Эта команда открывает встроенную обработку для просмотра и завершения сеансов.

    Для её работы требуется, чтобы на сервере или на клиентской машине, с которой вы пытаетесь управлять, был зарегистрирован COM-объект comcntr.dll актуальной версии платформы 1С. Убедитесь, что вы зарегистрировали правильную версию (например, 64-битную для 64-битного сервера).

    Шаги:

    1. Убедитесь, что comcntr.dll зарегистрирована для вашей версии платформы.
    2. В конфигурации (например, УПП 1.3) найдите команду "Активные пользователи" в разделе администрирования.
    3. Используйте её для просмотра и попытки завершения сеансов.
  4. Перезапуск службы Агента 1С:Предприятия

    Если отдельный зависший сеанс не поддается завершению, а перезапускать весь сервер или все рабочие процессы нежелательно (например, из-за наличия множества баз), можно рассмотреть перезапуск службы Агента сервера 1С:Предприятия. Это более мягкий способ, чем "варварское" завершение процесса rphost.exe через диспетчер задач.

    Алгоритм:

    1. Зайдите на сервер 1С.
    2. Откройте "Службы" (services.msc).
    3. Найдите службу "Агент сервера 1С:Предприятия (x86-64)" (или аналогичную, в зависимости от разрядности вашей платформы).
    4. Остановите и затем запустите службу.

    Это приведет к перезапуску всех рабочих процессов rphost, которые контролирует данный Агент, и, как следствие, к завершению всех активных сеансов, включая зависшие. Однако это повлияет на всех пользователей, работающих на этом Агенте, поэтому лучше выполнять эту операцию вне рабочего времени или после предупреждения пользователей.

  5. Перезапуск службы "Сервер 1С:Предприятия"

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

    Внимание: Этот метод приведет к завершению работы всех пользователей во всех базах, обслуживаемых данным сервером. Используйте его только в крайних случаях и после предупреждения пользователей.

    Шаги:

    1. Уведомите всех пользователей о предстоящем перезапуске.
    2. На сервере откройте "Службы" (services.msc).
    3. Найдите соответствующую службу 1С и выполните её перезапуск.

    Это самый "топорный" метод из всех программных, но он гарантированно завершит все процессы 1С, включая зависшие, так как перезапустит весь серверный компонент 1С.

  6. Использование командной строки (rac session terminate)

    Утилита rac (RAC – Remote Administration Console) позволяет управлять кластером серверов 1С:Предприятия из командной строки. Это особенно удобно для автоматизации или работы с Linux-серверами.

    Пример команды для завершения сеанса:

    
    opt/1C/v8.3/x86_64/rac session --cluster="<ID_кластера>" terminate --session="<ID_сеанса>"
    

    Здесь:

    • <ID_кластера> – уникальный идентификатор вашего кластера серверов 1С. Его можно узнать в консоли "Администрирование серверов 1С:Предприятия", зайдя в свойства кластера.
    • <ID_сеанса> – уникальный идентификатор зависшего сеанса. Его также можно найти в консоли администрирования или с помощью других команд rac, например, rac session list.

    Этот метод предоставляет точечный контроль и позволяет завершить конкретный сеанс, если вы знаете его ID и можете достучаться до сервера через командную строку.

  7. Настройка автоматического перезапуска рабочих процессов (rphost)

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

    Шаги по настройке в консоли "Администрирование серверов 1С:Предприятия":

    1. Подключитесь к кластеру серверов 1С.
    2. Перейдите в свойства рабочего сервера или кластера.
    3. Найдите настройки, связанные с перезапуском рабочих процессов:
      • "Интервал перезапуска" (Restart interval): Установите значение, например, 86400 секунд (одни сутки) для x86 систем или 0 секунд для x64 систем (чтобы платформа сама определяла оптимальное время перезапуска). Это позволит платформе автоматически перезапускать процессы rphost по расписанию.
      • "Допустимый объем памяти" (Memory limit): Установите максимальный объем памяти, который может занимать один процесс rphost. При превышении этого лимита rphost будет перезапущен.
      • "Интервал превышения допустимого объема памяти" (Memory excess interval): Время, в течение которого rphost может превышать допустимый объем памяти, прежде чем будет принудительно перезапущен.
      • "Выключенные процессы останавливать через" (Terminating inactive processes after): Установите время, через которое старый рабочий процесс rphost, с которого были перенесены активные сеансы, будет принудительно завершен. Например, 300 секунд (5 минут).

    Как это работает: При настроенном интервале перезапуска или превышении лимита памяти, платформа 1С запускает новый процесс rphost.exe. Затем она аккуратно переносит на него все "живые" активные сеансы со старого рабочего процесса. Старый процесс rphost, который теперь может содержать только "зависшие" сеансы (если они были), помечается как неактивный и через заданное время ("Выключенные процессы останавливать через") будет автоматически завершен, тем самым убирая все проблемные сеансы.

    Для решения проблемы с "окончательно зависшими" сеансами, как в сообщении 13, можно временно установить малый "Интервал перезапуска" (например, 3600 секунд - 1 час) и малое "Выключенные процессы останавливать через" (например, 300 секунд - 5 минут), чтобы принудительно "убить" зависший сеанс. После того как проблемный сеанс будет завершен, можно вернуть настройки на место.

  8. Настройка параметров информационной базы (через Конфигуратор)

    Через конфигуратор можно управлять поведением неактивных сеансов, что может помочь в борьбе со "спящими", но не критически зависшими сеансами.

    Шаги:

    1. Откройте конфигуратор вашей информационной базы.
    2. Перейдите в меню "Администрирование" -> "Параметры информационной базы".
    3. Настройте следующие параметры:
      • "Время засыпания пассивного сеанса" (IdleTimeout): Это время, по истечении которого неактивный сеанс считается "спящим". Рекомендуется устанавливать не менее 10 минут (600 секунд) для веб- и тонкого клиента, чтобы избежать случайных разрывов из-за кратковременной неактивности пользователя.
      • "Время завершения спящего сеанса" (SleepTimeout): Это время, по истечении которого "спящий" сеанс будет принудительно завершен. По умолчанию это значение может быть 24 часа. Для более оперативного завершения неактивных сеансов можно уменьшить это значение, например, до 60 минут (3600 секунд).

    Эти настройки помогут автоматически очищать сервер от давно неактивных сеансов, которые могут ошибочно восприниматься как зависшие и занимать ресурсы.

  9. Блокировка работы пользователей (штатный механизм)

    В большинстве типовых конфигураций 1С существует встроенный механизм блокировки работы пользователей. Он очень полезен перед обновлениями или регламентными работами, когда необходимо, чтобы все пользователи покинули базу.

    Шаги:

    1. Перейдите в раздел "Администрирование" -> "Обслуживание" (или аналогичный, в зависимости от конфигурации).
    2. Найдите пункт "Блокировка работы пользователей" (или "Управление блокировкой сеансов").
    3. Установите время начала и окончания блокировки, а также сообщение для пользователей, которое будет отображаться при попытке входа.

    При активации блокировки все активные сеансы будут принудительно завершены (включая большинство зависших, но не все), и пользователи не смогут войти в базу до снятия блокировки. Однако, как отмечают пользователи, даже этот механизм может не справиться с "окончательно зависшим" сеансом, который продолжает блокировать обновление.

  10. Настройка IIS для веб-публикаций (для веб/тонкого клиента)

    Если вы используете веб-публикацию баз 1С через веб-сервер IIS, мы рекомендуем для каждой информационной базы (приложения) настраивать отдельный пул приложений. Это дает дополнительный уровень контроля и изоляции.

    Преимущество: При зависании сеансов в одной конкретной базе вы можете перезапустить только пул приложений, связанный с этой базой, не затрагивая работу пользователей в других базах, опубликованных на том же веб-сервере.

    Шаги:

    1. В диспетчере IIS создайте отдельный пул приложений для каждой базы 1С, которую вы публикуете.
    2. Настройте веб-приложение 1С на использование соответствующего пула приложений.
    3. В случае зависания сеансов, связанных с конкретной базой, перезапустите нужный пул приложений через диспетчер IIS.

Мы рассмотрели разнообразные методы завершения зависших сеансов в 1С:Предприятии. От простых инструментов администрирования до глубоких настроек серверного кластера и командной строки. Настройка автоматического перезапуска рабочих процессов rphost и параметров тайм-аутов сеансов часто является наиболее эффективным решением для борьбы с периодически возникающими проблемами, особенно когда сеанс "завис окончательно". Однако, всегда помните, что принудительное завершение сеансов – это мера по устранению симптома. Критически важно выяснять и устранять первопричины зависаний, будь то сетевые проблемы, ошибки в коде или недостаток ресурсов, чтобы предотвратить их появление в будущем.

← На главную