Перенос файловых баз данных 1С:Предприятие на серверную операционную систему Windows Server (например, 2008 R2, 2012 R2 или более новые версии) часто сопровождается неожиданным падением производительности. Типичный сценарий: на обычном пользовательском компьютере с Windows 7 или Windows 10 синхронизация между конфигурациями 1С:Розница и 1С:Бухгалтерия занимала не более пары минут, но после перехода на выделенный сервер и установки нового быстрого SSD-накопителя выгрузка и загрузка всего 200 объектов начинает длиться по 10–15 минут в каждом направлении.
При этом остальные операции — формирование сложных отчетов, проведение документов и групповое перепроведение — могут выполняться с приемлемой скоростью. В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем неочевидные системные узкие места и пошагово настроим операционную систему, дисковую подсистему и саму платформу 1С для достижения максимальной скорости обмена.
По умолчанию в серверных операционных системах Windows Server активирована функция динамического распределения ресурсов — Dynamic Fair Share Scheduling (DFSS), также известная как TSFairShare. Этот механизм разработан для того, чтобы один пользователь в терминальной сессии не мог монополизировать процессорное время, дисковый ввод-вывод или пропускную способность сети, «подвесив» работу остальных коллег.
Однако для ресурсоемких однопоточных операций 1С, таких как чтение и запись файлов XML при обмене данными, этот алгоритм оказывается губительным. Система расценивает интенсивную дисковую активность процесса 1cv8.exe как угрозу и принудительно «душит» его приоритет. В результате мощный сервер начинает выполнять файловые операции медленнее бюджетного ноутбука.
Для исправления этой ситуации нам необходимо отключить TSFairShare через редактор реестра. Выполним следующие действия:
regedit и нажмите Enter.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TSFairShare\Disk.EnableFairShare и измените его значение на 0 (по умолчанию установлена единица). Если параметра нет, создайте его с типом DWORD (32-бит).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Quota System.EnableCpuQuota и также установите его значение в 0.Часто серверные процессоры искусственно занижают свою тактовую частоту из-за настроек энергосбережения операционной системы. Файловая СУБД 1С критически чувствительна к одноядерной производительности процессора (тактовой частоте ядра), а не к количеству ядер.
Разберем, как правильно сконфигурировать параметры быстродействия операционной системы:
Новый SSD-накопитель не гарантирует высокую скорость работы файловой базы 1С, если он неправильно настроен или его разделы не выровнены относительно физической структуры ячеек памяти. Невыровненные разделы приводят к тому, что при записи одного логического блока операционная система вынуждена перезаписывать два физических блока SSD, что снижает скорость случайной записи мелких файлов в разы.
Выясним, выровнен ли ваш накопитель, и оптимизируем его кэширование:
msinfo32. Перейдите по пути Компоненты -> Запоминающие устройства -> Диски. Нажмите на ваш SSD и найдите строку Раздел: Смещение начала. Разделите указанное число в байтах на 4096. Если результат деления — целое число без остатка, ваш диск выровнен правильно. В противном случае диск необходимо переразметить с помощью специализированных утилит.При обмене данными в информационную базу пакетно загружаются сотни и тысячи новых объектов. Платформа 1С по умолчанию пытается мгновенно проиндексировать каждый из них для работы механизма полнотекстового поиска. Это порождает колоссальный объем избыточных операций чтения-записи файлов индекса в каталоге базы данных.
Проанализируем шаги по отключению полнотекстового поиска и оптимизации журналов:
1С:Розница и 1С:Бухгалтерия в режиме «Предприятие» от имени администратора.1Cv8FTxt. Это полностью очистит старый индекс и освободит дисковое пространство.1Cv8.lgd). При частых транзакциях обмена файловая СУБД SQLite склонна к блокировкам. Для ускорения записи рекомендуется перевести журнал регистрации в старый текстовый формат. Для этого в папке 1Cv8Log внутри каталога базы удалите файл 1Cv8.lgd и создайте вместо него пустой текстовый файл с именем 1Cv8.lgf.Процесс обмена данными в 1С устроен так, что выгружаемые объекты сериализуются в промежуточные файлы XML во временных каталогах операционной системы, после чего считываются принимающей базой. Чтение и запись тысяч мелких XML-схем нагружают физический диск.
Мы можем перенаправить эти процессы напрямую в сверхбыструю оперативную память:
R:).TEMP и TMP, указав путь к вашему новому RAM-диску (например, R:\Temp).Если синхронизация долгое время работала некорректно или прерывалась, в базах могли накопиться миллионы записей о зарегистрированных к обмену объектах, которые 1С пытается прочитать и обработать при каждом запуске сессии синхронизации.
Рассмотрим, как быстро очистить таблицы регистрации изменений с помощью встроенных инструментов платформы:
// Выбираем все узлы плана обмена для удаления ошибочной регистрации
ВыборкаУзлов = ПланыОбмена.ОбменРозницаБухгалтерияПредприятия30.Выбрать();
Пока ВыборкаУзлов.Следующий() Цикл
Если Не ВыборкаУзлов.ЭтотУзел Тогда
// Удаляем регистрацию всех изменений для конкретного узла
ПланыОбмена.УдалитьРегистрациюИзменений(ВыборкаУзлов.Ссылка);
КонецЕсли;
КонецЦикла;
Применение этого комплекса мер — от тонкой настройки лимитов операционной системы Windows Server до оптимизации внутренней структуры журналов и индексов платформы 1С:Предприятие — позволяет поднять скорость синхронизации данных в файловом режиме в несколько раз, сократив время обработки типовых пакетов обмена с десятков минут до считанных секунд.