Многие специалисты при работе с платформой 1С:Предприятие версии 8.3.15.1830 и смежными релизами сталкиваются с аномальным поведением программы. Ситуация выглядит следующим образом: пользователь запускает файловую информационную базу (например, «Бухгалтерия предприятия 3.0»), работает непродолжительное время и закрывает приложение. Однако в «Диспетчере задач» Windows процесс 1cv8.exe продолжает висеть, а потребление оперативной памяти лавинообразно растет, достигая 10–15 ГБ и более, вплоть до полного исчерпания ресурсов системы.
В этой статье мы подробно разберем, почему это происходит, проанализируем внутренние механизмы платформы и найдем эффективные способы решения проблемы.
Разберем архитектурную особенность файловой базы. В отличие от клиент-серверного варианта, где фоновые задания выполняются отдельным процессом на сервере приложений, в файловом режиме за выполнение регламентных операций отвечает тот же самый процесс 1cv8.exe, в котором работает пользователь. Рассмотрим, что происходит при закрытии программы:
Проанализируем ситуацию: если фоновое задание попадает в бесконечный цикл или сталкивается с ошибкой при обработке огромного массива данных, процесс будет висеть в памяти бесконечно, продолжая выделять новые блоки RAM для своих нужд.
Как показывает практика и обсуждения экспертов, главным виновником «жора» памяти в 90% случаев является механизм Полнотекстового поиска данных (ППД). Выясним причину такого поведения. Платформа 1С хранит поисковый индекс в двух частях: «основной» и «дополнительной». Когда объем изменений в базе становится значительным, система запускает фоновое задание Слияние индекса ППД.
В версиях 8.3.14–8.3.16 был зафиксирован критический баг алгоритма слияния для файловых баз. При попытке объединить фрагменты индекса на диске, алгоритм пытается загрузить огромные объемы данных в оперативную память. Если индекс поврежден или его размер превышает свободное место в RAM, процесс начинает бесконечно свопировать данные, что и приводит к потреблению 15 ГБ памяти и более.
Если нам нужно зайти в базу и «успокоить» её, чтобы она не начала сразу поглощать ресурсы, воспользуемся ключом запуска. Рассмотрим этот метод подробнее:
/AllowExecuteScheduledJobs -Off
Этот параметр полностью блокирует выполнение любых регламентных и фоновых заданий в данном сеансе. Теперь, запустив базу, мы сможем спокойно провести административные действия, не опасаясь зависания процесса.
Если мы выяснили, что причина именно в ППД, его можно отключить программно через настройки конфигурации (на примере «Бухгалтерии предприятия 3.0»):
После очистки индекса потребление памяти должно нормализоваться, так как системе больше нечего будет «сливать» в фоновом режиме.
Иногда база зависает настолько сильно, что зайти в неё через интерфейс невозможно. В этом случае выполним «хирургическое» вмешательство. Разберем шаги по очистке папок базы:
1cv8.exe через диспетчер задач (кнопка «Снять задачу»).1Cv8.1CD.1Cv8FTxt. Именно в ней хранятся файлы индекса полнотекстового поиска.1Cv8FTxt целиком.При следующем запуске 1С увидит, что индекса нет, и не будет пытаться выполнить его слияние. Система начнет строить его заново (если поиск включен), но на это время «жор» памяти прекратится.
Платформа 8.3.15 активно использует кэш метаданных, который также может быть поврежден при некорректном завершении процесса. Проанализируем ситуацию: если кэш «битый», платформа может пытаться бесконечно его переиндексировать. Рекомендуем выполнить следующие действия:
%AppData%\1C\1Cv8%LocalAppData%\1C\1Cv8Важно: это сбросит настройки положения окон и списки последних выбранных значений, но часто помогает решить проблемы с утечкой памяти.
Рассмотрим долгосрочное решение. Ветка 8.3.15 (особенно релиз .1830) официально признана экспертами как одна из самых проблемных для файлового режима работы в сочетании с современными тяжелыми конфигурациями. Для устранения ошибки на корневом уровне рекомендуется:
Таким образом, мы выяснили, что «беда» заключается в конфликте механизма ППД и специфических багов конкретного релиза платформы. Выполнив очистку индекса и ограничив фоновые задания, вы вернете стабильность работе вашей системы.