Переход на новые релизы платформы 1С:Предприятие 8.3 часто сопровождается не только появлением новых возможностей, но и непредвиденными сложностями в администрировании. Одной из самых обсуждаемых тем в последнее время стала нестабильная работа ветки 8.3.23, в частности релиза 8.3.23.1865. Пользователи массово жалуются на аномально долгое время первого запуска информационных баз, избыточную нагрузку на дисковую подсистему и ошибки совместимости со старыми конфигурациями.
В этой статье мы подробно проанализируем причины возникновения этих проблем, разберем механизмы кэширования в новых версиях платформы и предложим проверенные способы стабилизации работы системы.
Проанализируем ситуацию, описанную системными администраторами: при запуске базы в каталоге %LOCALAPPDATA%\1Cv8 пользователя, под которым работает агент сервера 1С, начинается лавинообразная запись временных файлов. Выясним причину такого поведения. В ветке 8.3.23 разработчики 1С существенно переработали механизмы формирования локального кэша метаданных. Теперь при первом подключении к базе (особенно после обновления платформы или реструктуризации) система инициирует глубокую проверку и перестроение индексных файлов кэша.
Если процесс прерывается или блокируется внешними средствами, платформа может войти в цикл постоянной перезаписи этих данных при каждом новом сеансе. Для решения этой проблемы рассмотрим следующие шаги:
1C:Enterprise 8.3 Server Agent. Полностью удалите содержимое папок внутри каталога srvinfo (за исключением файлов настроек .lst). Это заставит сервер пересоздать структуру сеансовых данных «с чистого листа».%LOCALAPPDATA% и %APPDATA%. Недостаток прав часто приводит к тому, что временные файлы создаются, но не могут быть корректно индексированы.Разберем, почему стандартные средства защиты системы могут стать «врагом» производительности 1С. Поскольку релиз 8.3.23 создает огромное количество мелких файлов в процессе кэширования, антивирусы (включая встроенный Windows Defender) могут распознать эту активность как подозрительную (схожую с работой вирусов-шифровальщиков). Каждая попытка записи файла блокируется для сканирования, что увеличивает время загрузки конфигурации в 5–10 раз.
Чтобы исключить этот фактор, выполним настройку исключений. Добавим в доверенную зону антивируса:
rphost.exe, rmngr.exe, ragent.exe, 1cv8.exe, 1cv8c.exe.AppData\Local\1Cv8 и AppData\Roaming\1Cv8).Рассмотрим специфическую проблему, возникающую в конфигурациях, работающих в режиме совместимости с версией 8.2.16. В релизах 8.3.23 была обнаружена ошибка: внутренние механизмы платформы (например, при формировании отчетов на базе БСП) пытаются вызвать функцию StrTemplate (или СтрШаблон), которая физически отсутствует в ядре версии 8.2.16. Это приводит к аварийному завершению работы отчетов.
Если вы не можете поднять режим совместимости конфигурации, можно применить «костыль» — программную эмуляцию функции. Создадим общий модуль с признаком «Глобальный» и добавим в него следующий код:
Функция СтрШаблон(Знач Шаблон, Знач Значение1 = Неопределено, Знач Значение2 = Неопределено, Знач Значение3 = Неопределено) Экспорт
// Простая реализация замены параметров для старых режимов совместимости
Результат = Шаблон;
Результат = СтрЗаменить(Результат, "%1", Строка(Значение1));
Результат = СтрЗаменить(Результат, "%2", Строка(Значение2));
Результат = СтрЗаменить(Результат, "%3", Строка(Значение3));
Возврат Результат;
КонецФункции
Этот метод позволит платформе найти требуемую функцию и продолжить работу без критических ошибок.
Многие разработчики переходят на 8.3.23 только ради возможности использовать регламентные задания внутри расширений. Однако, учитывая нестабильность платформы, можно рассмотреть альтернативный способ реализации этой задачи на более стабильной ветке 8.3.22.
Посмотрим на пример использования программного создания заданий через БСП. Вместо того чтобы полагаться на механизмы платформы в расширении, мы можем добавить задание в справочник РегламентныеЗадания программно:
Процедура ПриУстановкеРасширения()
// Используем методы БСП для регистрации задания
МетаданныеОбъекта = Метаданные.ОбщиеМодули.МойМодульИзРасширения;
РегламентныеЗаданияСервер.ДобавитьЗадание(
"МоеЗаданиеИзРасширения",
"Выполнение обработки данных",
"МойМодульИзРасширения.ВыполнитьДействие",
Истина
);
КонецПроцедуры
Такой подход позволяет оставаться на стабильном релизе 8.3.22.2239, сохраняя необходимый функционал.
Проанализировав опыт эксплуатации различных сборок, можно сделать следующие выводы:
shared_buffers. Платформа 8.3.23 более агрессивно работает с планами запросов, что может потребовать увеличения объемов выделяемой памяти на стороне СУБД.Таким образом, основное решение проблем с медленным открытием баз в 8.3.23 заключается в комплексном подходе: очистке кэша, настройке антивируса и, в крайнем случае, использовании программных патчей для обеспечения обратной совместимости.