Разберем ситуацию, с которой часто сталкиваются системные администраторы и программисты при обновлении адресного классификатора. Вы запускаете загрузку ФИАС, большинство регионов загружается корректно, но на самых объемных (например, Московская область) процесс прерывается и выдает сообщение: "Не удается загрузить адресные сведения из файлов. На сервере недостаточно памяти для выполнения задания". При этом база может быть клиент-серверной, а физической оперативной памяти на сервере более чем достаточно (например, 64 ГБ ОЗУ).
Проанализируем причину такого поведения и по шагам рассмотрим все доступные методы решения этой проблемы, чтобы вы могли успешно обновить адресные сведения в вашей информационной базе.
В первую очередь выясним причину остановки фонового задания на стороне сервера 1С. В консоли администрирования кластеров 1С существуют механизмы защиты от неконтролируемого потребления ресурсов. Если процесс загрузки тяжелого XML-файла превышает установленные квоты, система принудительно его завершает.
Посмотрим на настройки рабочих процессов. Нам необходимо проверить следующие параметры:
Допустимый объем памяти и Безопасный расход памяти за один вызов.Если эти параметры настроены слишком строго (чтобы тяжелые пользовательские отчеты не "вешали" сервер), то процесс rphost, который распаковывает и читает данные Московской области, быстро упирается в этот лимит и убивается. На время загрузки больших регионов рекомендуем временно отключить эти лимиты (установив значение в 0) или существенно их увеличить. После успешной загрузки ФИАС верните настройки в исходное состояние.
Рассмотрим подробнее архитектуру запуска приложения. Часто пользователи и администраторы гордятся тем, что у них установлен 64-разрядный сервер 1С, но забывают про клиентскую часть. Запуск самой сессии 1С (откуда инициируется фоновое задание или происходит предварительная обработка файлов) нередко выполняется с 32-разрядного "толстого" или "тонкого" клиента.
Московская область — один из самых объемных архивов в ФИАС. При парсинге гигантских файлов 32-битный клиент упирается в жесткое архитектурное ограничение операционной системы (около 2-3 Гб памяти на один процесс). Установите и запустите 1С через 64-битный клиент. В большинстве случаев переход на архитектуру x64 для клиента полностью решает проблему нехватки памяти при чтении объемных структур.
Проанализируем сетевой аспект проблемы. Если загрузка классификатора настроена напрямую через интернет (с веб-портала ИТС), процесс может падать из-за буферизации огромного объема данных в оперативной памяти. Сетевые таймауты и разрывы соединений также усугубляют ситуацию.
Разберем альтернативный и более надежный путь:
Этот метод радикально снижает нагрузку на сеть и буферы памяти, позволяя платформе читать файлы последовательно.
Сообщение о "нехватке памяти" в платформе 1С очень часто маскирует банальную нехватку физического дискового пространства. При распаковке архива ФИАС для одного крупного региона генерируются временные файлы объемом в несколько гигабайт.
Обязательно проверим директорию временных файлов %TEMP% того пользователя операционной системы, под которым запущена служба сервера 1С (чаще всего это локальный профиль USR1CV8). Если системный диск сервера (обычно диск C) переполнен, распаковка прерывается с ошибкой нехватки памяти. Очистите папку временных файлов и убедитесь, что на системном диске доступно не менее 10-15 ГБ свободного места.
Посмотрим на процесс со стороны системы управления базами данных (MS SQL Server или PostgreSQL). При записи миллионов новых адресных объектов сервер СУБД выполняет массивные транзакции. Эти транзакции требуют огромного объема временных данных.
Если диск, на котором располагается системная база tempdb, переполнен, или максимальный размер этой базы искусственно ограничен в настройках SQL-сервера, СУБД прервет транзакцию. Платформа 1С не всегда корректно интерпретирует ответ от СУБД и может транслировать это пользователю как ошибку нехватки памяти. Проверьте настройки автоприроста базы tempdb и наличие свободного места на диске с базами данных.
Наконец, выясним причину, связанную с самой платформой. В некоторых релизах платформы 1С:Предприятие 8.3 присутствуют зарегистрированные ошибки (утечки памяти), возникающие при использовании платформенного объекта ЧтениеXML на огромных файлах. Память выделяется под чтение узлов, но не освобождается сборщиком мусора вовремя.
Если вы столкнулись с такой "плавающей" проблемой, выполните следующие шаги:
Применяя описанные выше методы комплексно, вы сможете обойти архитектурные лимиты системы и успешно загрузить полную адресную базу ФИАС даже для самых ресурсоемких регионов.