В процессе администрирования серверов 1С, особенно в средах разработки и тестирования, часто возникает ситуация, когда огромное количество копий рабочих баз начинают потреблять избыточные ресурсы. Основными «пожирателями» дискового пространства становятся журналы регистрации (ЖР), а ресурсы процессора и памяти нецелесообразно расходуются на выполнение регламентных заданий, которые в тестовых контурах чаще всего не нужны. Разберем подробно, как администратор сервера может решить эти задачи централизованно, не заходя в каждую базу под учетной записью администратора системы.
Самый простой и штатный способ остановить выполнение фоновых процессов — это использование консоли администрирования кластера 1С (MMC-оснастка или Java-консоль). Проанализируем, как это сделать без входа в саму информационную базу. В свойствах каждой информационной базы на уровне кластера существует специальный флаг.
Рассмотрим последовательность действий:
Этот метод хорош тем, что он не требует знания пароля администратора конкретной базы (достаточно прав администратора кластера 1С), однако ручная обработка десятков баз неэффективна. Выясним, как автоматизировать этот процесс.
Для массового управления параметрами баз целесообразно использовать утилиту rac.exe, которая поставляется вместе с платформой. Это позволит нам написать скрипт, который будет «пробегать» по всем тестовым базам и отключать задания. Посмотрим на пример команды для изменения свойств базы:
rac infobase --cluster=<ID_кластера> update --infobase=<ID_базы> --scheduled-jobs-deny=on
Используя язык PowerShell, мы можем получить список всех баз и применить это правило ко всем базам, в названии которых встречается слово "Test". Это исключает человеческий фактор и необходимость ручного вмешательства при добавлении новых копий.
С журналом регистрации ситуация несколько сложнее, так как в старых версиях платформы (до 8.3.15) штатной настройки «отключить совсем» на уровне кластера не было — требовался вход в Конфигуратор. Однако, начиная с версии 8.3.15, в свойствах информационной базы в консоли администрирования появился параметр Уровень регистрации событий.
Проанализируем доступные варианты:
Если же вы используете более старую версию платформы, разберем обходные пути на уровне файловой системы.
Когда доступ к Конфигуратору невозможен, а диск стремительно заполняется, администратор может воздействовать непосредственно на файлы журнала. Журнал регистрации в формате .lgp (текстовый) или .lgd (SQLite) хранится в каталоге srvinfo (путь по умолчанию C:\Program Files\1cv8\srvinfo).
Рассмотрим радикальный, но действенный метод «заглушки»:
1C:Enterprise 8.3 Server Agent.1Cv8Log.1Cv8.lgd и отобрать права на запись у пользователя, от имени которого запущена служба 1С (обычно USR1CV8).Важный нюанс: при использовании нового формата журнала (SQLite, расширение .lgd), попытка полной блокировки файла может привести к ошибкам в работе платформы при попытке записи события. Поэтому более элегантным решением будет использование символьных ссылок (Symbolic Links). Мы можем перенаправить папку 1Cv8Log на другой диск или даже на виртуальный RAM-диск, данные с которого стираются при перезагрузке.
На уровне SQL-сервера также существует возможность изменить настройки ЖР, так как параметры базы хранятся в таблице Params. В этой таблице есть запись log.inf, где хранятся настройки глубины и уровня логирования. Однако прямое редактирование таблиц SQL не рекомендуется вендором, так как формат хранения данных в поле Binary Data может меняться от версии к версии.
Если ваша организация использует лицензии уровня КОРП, мы можем применить механизм Профилей безопасности. Профиль безопасности позволяет жестко ограничить права процесса rphost на запись в определенные каталоги файловой системы.
Разберем этот сценарий:
Создав профиль безопасности и назначив его тестовым базам, мы можем запретить доступ к подпапкам 1Cv8Log. В этом случае попытка платформы записать событие в журнал будет пресекаться на уровне операционной системы, при этом сама база данных продолжит функционировать. Это мощный административный рычаг, позволяющий управлять ресурсами сервера без вмешательства в логику конфигурации.
Если полностью отключать журнал нельзя (например, он нужен для расследования редких ошибок программистами), рассмотрим вариант автоматической «подрезки». Напишем пример простого PowerShell-скрипта, который можно поставить в планировщик задач сервера. Скрипт будет удалять файлы журналов старше 1 дня для всех баз, чьи пути содержат папку "Test".
$LogPath = "C:\Program Files\1cv8\srvinfo\reg_1541"
Get-ChildItem -Path $LogPath -Recurse -Include "*.log", "*.lgp", "*.lgd" | Where-Object {
$_.LastWriteTime -lt (Get-Date).AddDays(-1) -and $_.FullName -like "*Test*"
} | Remove-Item -Force
Этот подход позволяет поддерживать работоспособность сервера в автоматическом режиме, не вступая в конфликты с разработчиками по поводу использования ресурсов скоростных SSD-дисков.
Мы проанализировали несколько уровней решения проблемы: от штатных настроек платформы до «хакерских» методов на уровне файловой системы. Подведем итоги:
rac.exe и скрипты автоматизации.1Cv8Log или механизм символьных ссылок.Применяя эти методы, администратор сервера получает полный контроль над инфраструктурой тестовых баз, обеспечивая стабильную работу основных продуктивных систем.