Рассмотрим распространенную и крайне неприятную ситуацию: при выгрузке или загрузке данных в 1С процесс «зависает» на начальном этапе (например, на 10%), после чего индикатор прогресса останавливается, а процесс 1cv8.exe продолжает активно использовать процессор и наращивать потребление оперативной памяти. Проанализируем причины такого поведения платформы и разберем проверенные способы восстановления штатной работы обмена.
Выясним, почему платформа может блокировать запись данных или входить в затяжную обработку большого пакета XML:
1cv8.exe ограничена адресным пространством (порядка 2–3 ГБ). При чтении и создании объемного DOM-дерева XML-файла память исчерпывается, и процесс бесконечно перекладывает данные в файл подкачки.Разберем самый эффективный штатный инструмент управления обменом — варьирование размера порции данных, записываемых в рамках одной транзакции.
По умолчанию в настройках обмена значение количества объектов в транзакции может быть установлено в 0 (что означает запись всех объектов в одной транзакции). Это вызывает пиковое потребление ресурсов. Чтобы изменить этот параметр, выполним следующие шаги:
1 или 100.Установка значения, например, 100 позволяет достичь оптимального компромисса между параллельностью работы пользователей и целостностью данных. Если установить 1, каждый объект будет записываться и фиксироваться в базе отдельно. Это существенно снижает требования к объему оперативной памяти и предотвращает падение процесса при загрузке тяжелых файлов, хоть и может незначительно увеличить общее время передачи за счет частых транзакционных вызовов.
В процессе поиска решения у некоторых разработчиков возникает идея вручную снять с регистрации часть изменений, выгрузить первую половину, а затем зарегистрировать остаток. Проанализируем, почему такой подход критически опасен для РИБ:
В распределенных информационных базах регистрация изменений документов и связанных с ними движений по регистрам выполняется автономно. Если выключить регистрацию для части объектов, возникнет рассинхронизация: документ может уйти в узел без своих движений, либо наоборот. В дальнейшем придётся вручную искать потерянные данные и писать вспомогательные обработки для восстановления структуры.
Именно поэтому корректнее управлять процессом через штатный механизм транзакций, не затрагивая таблицы регистрации изменений (ЗарегистрироватьИзменения).
Если настройка размера транзакции не сняла проблему целиком, разберем дополнительные технические шаги по оптимизации:
%TEMP%, а также кэш платформы 1С. Это исключит ошибки распаковки входящих ZIP-архивов.1Cv8.1cd.chdbfl.exe, находящейся в каталоге bin установленной платформы.