Меню Закрыть

1С перезапуск рабочих процессов

Содержание

Раздел поясняет влияние соединений с кластером на управление рабочими процессами.

Соединения кластера

Утилита администрирования кластера серверов позволяет посмотреть список соединений:

  • кластера в целом (ветка "Центральные серверы 1С:Предприятия 8.1/ / Кластеры/ / Соединения");
  • рабочего процесса (ветка "Центральные серверы 1С:Предприятия 8.1/ / Кластеры/ / Процессы/ / Соединения" или ветка "Центральные серверы 1С:Предприятия 8.1/ / Кластеры/ / Рабочие серверы/ / Процессы/ / Соединения");
  • информационной базы (ветка "Центральные серверы 1С:Предприятия 8.1/ / Кластеры/ Информационные базы/ / Соединения").

Среди соединений имеются:

  • пользовательские соединения (1С:Предприятие, Конфигуратор, COM-соединения, WS-соединение, Фоновое задание, Консоль кластера, COM-администратор)
  • служебные соединения (Планировщик заданий, Отладчик)

Пользовательские соединения относятся к информационной базе и видны в списке соединений:

  • своей информационной базы;
  • своего рабочего процесса;
  • кластера в целом.

Служебные соединения не относятся к конкретной информационной базе и видны в списках соединений:

  • своего рабочего процесса;
  • кластера в целом.

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

Разрыв соединения

Утилита администрирования кластера серверов и средства программного администрирования кластера (объект V81.COMConnector) позволяют выполнять принудительный разрыв соединений с кластером. Принудительно могут быть разорваны только пользовательские соединения. Возможность принудительного разрыва пользовательского соединения может зависеть от действия, которое в данный момент выполняется на сервере по инициативе данного соединения:

  • если по инициативе пользовательского соединения на сервере не выполняется никакого действия, то соединение может быть разорвано всегда;
  • если в момент разрыва соединения соединение выполняет на сервере код на встроенном языке, то разрыв соединения возможен при переходе выполнения от одной строки кода на встроенном языке к другой;
  • если соединение выполняет запрос к базе данных, то для MS SQL Server и IBM DB2 1С:Предприятие предпринимает попытку прервать выполнение запроса сервером баз данных. Соединение будет разорвано, если пользователь базы данных, от имени которого сервер 1С:Предприятия выполняет обращение к базе данных, имеет соответствующие права, и СУБД готово выполнить функцию прекращения исполнения запроса;
  • в других случаях попытка принудительного разрыва пользовательского соединения может не привести к фактическому разрыву соединения.
Читайте также:  Ora 06502 pl sql

Принудительный разрыв служебных соединений невозможен.

Выключение и остановка рабочего процесса

Каждый рабочий процесс, определенный в кластере, может быть выключен или включен. При запуске кластера запускаются только включенные процессы. В работающем кластере при помощи Утилиты администрирования кластера серверов или средств программного администрирования кластера можно включать и выключать рабочие процессы, а также их создавать и удалять. После включения рабочий процесс запускается, если он до этого не был запущен и был выключен.

После выключения запущенного рабочего процесса он останавливается не сразу, а только тогда, когда с ним не будет установлено ни одного пользовательского соединения. При этом новых пользовательских соединений с данным рабочим процессом устанавливаться не будет. Для обеспечения возможности остановки рабочего процесса даже в том случае, когда с ним еще установлены пользовательские соединения, в Утилите администрирования кластера серверов предусмотрен параметр "Выключенные процессы останавливать через. " в свойствах кластера, а в средствах программного администрирования кластера — свойство ExpirationTimeout объекта "Кластер серверов" (IClusterInfo).

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

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

Регламентный перезапуск рабочих процессов

Для минимизации отрицательных последствий фрагментации и утечки памяти в рабочих процессах может быть предусмотрен их автоматический перезапуск. В 1С:Предприятие встроена возможность автоматического перезапуска рабочих процессов через заданные интервалы времени. Для этого в Утилите администрирования кластера серверов предназначен параметр "Рабочие процессы перезапускать через. " в свойствах кластера, а в средствах программного администрирования кластера — свойство LifeTimeLimit объекта "Кластер серверов" (IClusterInfo). Если этот параметр отличен от 0, то для каждого рабочего процесса через заданное количество секунд после его запуска:

  • создается и запускается новый процесс;
  • текущий процесс выключается.
Читайте также:  Эксель конструктор работа с таблицами

Это позволяет обеспечить автоматическое ограничение времени жизни рабочих процессов. Рекомендуется время, заданное параметрами LifeTimeLimit и ExpirationTimeout, связывать с длительностью технологического цикла конкретной информационной базы (сутки, неделя и т. д.).

Если автоматический перезапуск рабочих процессов при окончании заданного времени жизни не решает проблему, то возможна организация программного перезапуска по каким-нибудь другим критериям (объем памяти, занимаемые ресурсы, . ). Для этого при помощи средств программного администрирования кластера объекта V81.COMConnector необходимо:

  • установить время принудительной остановки рабочих процессов (свойство ExpirationTimeout объекта "Кластер серверов");
  • согласно установленным критериям выбрать рабочий процесс, который необходимо перезапустить;
  • запустить новый процесс;
  • выключить выбранный процесс;
  • после того, как выключенный процесс будет остановлен, удалить его из кластера.

Приведенный ниже пример кода позволяет установить время принудительной остановки рабочих процессов:

Следующий фрагмент кода является простым примером регламентного перезапуска рабочих процессов:

Добавление рабочего процесса
Добавление рабочего процесса, в отличие от просмотра, возможно, только для конкретного сервера кластера.
Для добавления нового рабочего процесса сервера кластера следует выбрать в дереве центральных серверов требуемый сервер, выбрать требуемый кластер, выбрать требуемый сервер кластеров выбрать ветку «Процессы» и выполнить команду контекстного меню "Создать — Процесс", галочкой Включить процесс.

По поводу перезапуска рабочих процессов — с какого момента начинается отсчет указанный в настройке кластера?
С момента старта процесса. Например стартовал в 18:00:00. Период перезапуска 86400 секунд, т.е. 24 часа. Соответственно через сутки в 18:00:00 процесс остановится и будет создан новый процесс.

Оптимизация рабочих процессов:
1. Интервал перезапуска: 86400 сек (24 часа). Момент перезапуска не регламентируется, видимо с момента установки параметров, либо запуска сервера приложений.
2. Также можно указать допустимый объем памяти: 3000000 Кб (3 Гб).
3. Интервал превышения допустимого объема памяти — это непрерывный интервал времени превышения допустимого объема памяти, после которого сервер перезапустит процесс. Если указано 0 сек — будет ждать вечно.

Читайте также:  Ехала на ручнике на автомате что будет

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

Чтобы избежать этих проблем необходимо задать настройки кластера 1С:Предприятия 8 и создать необходимое количество рабочих процессов. По моему опыту +1 рабочий процесс на каждые 25-35 пользователей. Рисунок настроек кластера 1С:

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

Допустимый объем памяти — это размер памяти при превышении которого, запускается таймер отсчета в секундах.

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

Выключенные процессы останавливать через — этот параметр означает, когда пройдет 30 секунд, после того как рабочий процесс помечен не активен, он будет завершен операционной системой. Если значение будет равно "0" — процессы автоматически завершаться не будут.

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

Рекомендуем к прочтению

Добавить комментарий

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