Почему регламентное задание "Отправка серверных оповещений клиентам" блокирует резервное копирование и как это исправить?

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

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

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

Причины возникновения проблемы

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

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

  1. Выгрузка базы в файл .dt: Эта операция требует эксклюзивной блокировки базы данных, что становится невозможным при постоянно активном системном регламентном задании. Хотя существуют специфические методы, позволяющие выполнять резервное копирование в dt без закрытия сессий, системное задание 8.3.25 вносит свои коррективы в этот процесс.
  2. Обновление конфигурации базы данных: Изменения в структуре базы данных также требуют монопольного режима работы, который блокируется активным РЗ.
  3. Реструктуризация информационной базы: Любые изменения структуры метаданных не могут быть выполнены из-за постоянной активности задания.

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

Решение проблемы: Модификация регламентного задания через расширение

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

Мы разберем шаги, которые необходимо выполнить для создания и настройки расширения:

  1. Создание нового расширения:

    Откройте конфигуратор 1С:Предприятия. В главном меню выберите "Конфигурация" -> "Расширения конфигурации" -> "Добавить". Присвойте новому расширению понятное имя, например, "УправлениеРегламентнымиЗаданиями". Убедитесь, что расширение активно.

  2. Добавление регламентного задания в расширение:

    В дереве объектов конфигурации расширения найдите ветку "Общие" -> "Регламентные задания". Щелкните правой кнопкой мыши по этой ветке и выберите "Добавить" -> "Существующее регламентное задание". В открывшемся списке найдите и выберите регламентное задание ОтправкаСерверныхОповещенийКлиентам. Это добавит объект регламентного задания в ваше расширение, позволив переопределить его свойства.

  3. Переопределение расписания регламентного задания:

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

    Мы можем выбрать несколько подходов к изменению расписания:

    • Полное отключение задания на период резервного копирования: Если вы хотите полностью отключить задание в ночное время, вы можете создать расписание, которое не включает в себя часы выполнения резервного копирования. Например, если бэкап делается с 01:00 до 04:00, мы можем установить расписание с 04:00 до 01:00 следующего дня, или создать два расписания: одно с 00:00 до 01:00 и второе с 04:00 до 23:59. Однако, для данного задания пользователи сообщают, что создание таких "окон" может быть проигнорировано платформой, и оно все равно будет запускаться.

    • Отключение задания в определенные дни недели: Некоторые пользователи сообщают об успешном отключении задания, сняв галочку с одного из дней недели в расписании, даже если это не полностью соответствует желаемому окну для бэкапа. Это может быть временным обходным путем, если другие методы не срабатывают. Мы можем попробовать снять флажок, например, у четверга, или любого другого дня, когда резервное копирование не планируется.
    • Установка длительного интервала: В качестве компромиссного решения, если полное отключение невозможно или нежелательно, можно установить значительно больший интервал выполнения задания (например, раз в час или несколько часов) вместо стандартных 300 секунд. Это уменьшит его влияние на базу данных и увеличит шансы на успешное выполнение монопольных операций.

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

Управление фоновыми заданиями через скрипты (общий подход)

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

Для реализации этого метода мы будем использовать внешние обработки или PowerShell-скрипты, взаимодействующие с агентом сервера 1С:Предприятия. Основная логика будет заключаться в следующем:

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

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

Остановка и запуск агента сервера 1С (радикальный метод)

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

Последовательность действий:

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

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

Ключевые рекомендации по резервному копированию серверных баз 1С

Отдельно стоит остановиться на самом подходе к резервному копированию. Многие пользователи, включая автора темы, традиционно используют выгрузку базы в файл .dt. Однако фирма "1С" настоятельно рекомендует использовать для резервного копирования информационных баз, работающих в клиент-серверном режиме, стандартные средства системы управления базами данных (СУБД). Мы настоятельно рекомендуем пересмотреть стратегию резервного копирования, если вы до сих пор полагаетесь на .dt.

Преимущества использования средств СУБД (SQL Server Backup, PostgreSQL pg_dump):

  1. Высокая скорость создания копий: Средства СУБД разработаны для эффективной работы с большими объемами данных. Правильно настроить этот процесс поможет инструкция по настройке регламентных операций MS SQL SERVER под 1С.
  2. Надежность и целостность данных: Бэкапы, созданные средствами СУБД, контролируют целостность данных на уровне самой СУБД. При этом вы можете в реальном времени анализировать SQL сервер глазами 1С-ника для выявления возможных проблем с производительностью или блокировками. Выгрузка в .dt файл, напротив, не проверяет базу на наличие ошибок, из-за которых файл может впоследствии просто не загрузиться.
  3. Поддержка инкрементальных и дифференциальных резервных копий: Средства СУБД позволяют создавать различные типы копий, что существенно экономит дисковое пространство и время на создание бэкапов.
  4. Журналы транзакций: Возможность работы с журналами транзакций позволяет восстанавливать базу данных на любой момент времени, что критически важно для минимизации потерь данных в случае сбоя.
  5. Сжатие данных: Мы можем использовать встроенные возможности СУБД для сжатия резервных копий, что значительно экономит место на диске.
  6. Независимость от платформы 1С: Резервное копирование средствами СУБД выполняется на уровне базы данных, независимо от текущей активности пользователей 1С или регламентных заданий. Это вписывается в общую концепцию защищенной IT инфраструктуры, где каждый уровень системы должен быть надежно защищен.

Почему выгрузка в .dt не рекомендуется для серверных баз:

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

Дополнительные инструменты:

Мы также можем порекомендовать программу "Обновлятор 1С" от Милькина В.В. Этот инструмент предоставляет удобные средства для автоматизации обслуживания баз 1С, включая резервное копирование средствами СУБД, что может быть полезно, если вам не хочется глубоко погружаться в администрирование баз данных.

Обязательная проверка резервных копий:

Независимо от выбранного метода резервного копирования (будь то средства СУБД или .dt), критически важно периодически проверять работоспособность создаваемых резервных копий путем их восстановления на тестовом контуре. Это единственный способ убедиться, что в случае реального сбоя вы сможете оперативно восстановить данные.

Заключение

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

← На главную