В среде 1С:Предприятие существует множество аббревиатур, которые знакомы только узким специалистам, работающим с ядром платформы. Одной из таких технологий является ТМС — технология, отвечающая за критически важный аспект производительности системы при работе с большими объемами данных. Если вы когда-либо сталкивались с медленным формированием отчетов или долгим обновлением конфигураций, то, вероятно, именно механизмы, связанные с ТМС, могли бы помочь решить проблему.

Расшифровка термина часто вызывает вопросы у новичков, так как в документации она не всегда лежит на поверхности. Под ТМС (Технология Многопроцессорной Сортировки) или просто механизмом внешней сортировки понимается процесс выгрузки промежуточных данных из оперативной памяти на жесткий диск. использует этот механизм, когда объем обрабатываемых записей превышает выделенные лимиты или когда требуется объединение результатов из разных источников.

В этой статье мы детально разберем, как работает эта подсистема, почему она важна для стабильности сервера и как правильно настроить параметры для максимальной скорости. Понимание принципов работы ТМС позволит вам избежать падений сервиса при пиковых нагрузках и оптимизировать использование дискового пространства.

Архитектура внешней сортировки в ядре платформы

Основная задача ТМС заключается в эффективном управлении памятью. Когда запрос к базе данных формирует выборку, результаты которой не помещаются в отведенный пул оперативной памяти процесса rphost, система автоматически переключается на работу с файлами на диске. Это предотвращает переполнение RAM и краш сервиса.

Процесс сортировки разбивается на этапы. Сначала данные считываются из СУБД (MSSQL, PostgreSQL, Oracle) и сортируются частями, которые сохраняются во временные файлы. Затем эти файлы объединяются (сливаются) в итоговый результат. Именно этот механизм и называется ТМС или внешней сортировкой.

Важно понимать, что использование дисковой подсистемы всегда медленнее работы с оперативной памятью. Поэтому целью администратора является баланс: настроить систему так, чтобы ТМС включалась только тогда, когда это действительно необходимо, но не вызывала тормозов из-за медленного диска.

⚠️ Внимание: Размещение временных файлов сортировки на сетевых дисках или медленных HDD может снизить производительность отчетов в 10-20 раз. Критически важно использовать быстрые SSD или RAID-массивы для каталога временных файлов.

💡

Используйте утилиту perfmon или аналоги для мониторинга очереди диска во время формирования тяжелых отчетов. Если очередь постоянно больше 2, значит диск не справляется с нагрузкой от ТМС.

Настройка параметров работы временных файлов

Управление поведением ТМС осуществляется через параметры запуска сервера 1С или через файл srvinfo\reg_1541\1Cv8Srv.cfg. Ключевым параметром здесь является MaxMemSize, который ограничивает объем памяти, выделяемый на одного пользователя для работы с данными.

Если значение MaxMemSize установлено слишком низким, система будет постоянно обращаться к ТМС, записывая на диск даже небольшие выборки. Это создает избыточную нагрузку на ввод-вывод (I/O). Напротив, слишком высокое значение может привести к исчерпанию всей физической памяти сервера.

Также существует параметр, регулирующий максимальный размер одного временного файла. В современных версиях платформы 1С:Предприятие 8.3 эти настройки стали более гибкими и адаптивными, но ручной контроль все еще необходим для высоконагруженных систем.

  • 📂 TempDir — путь к каталогу, где хранятся файлы внешней сортировки. По умолчанию используется системная папка Temp пользователя, под которым запущен сервис.
  • 💾 MaxTempFileSize — ограничение на размер одного файла подкачки, чтобы избежать фрагментации и проблем с файловой системой.
  • ⚙️ WorkingProcessMaxMemory — глобальный лимит памяти для процесса, влияющий на частоту обращения к ТМС.
📊 Где у вас хранятся временные файлы 1С?
В системной папке Windows
На отдельном быстром SSD
На сетевом ресурсе
Не знаю, где они лежат

Для изменения пути к временным файлам можно использовать ключ командной строки при запуске сервера или задать его в реестре. Пример команды для явного указания пути:

/T "D:\1C_Temp\SrvData"

Убедитесь, что у учетной записи службы 1С:Предприятие есть полные права на чтение и запись в указанную директорию. Отсутствие прав приведет к ошибке при попытке формирования отчета.

Влияние дисковой подсистемы на скорость ТМС

Поскольку ТМС активно использует операции записи и чтения, скорость диска является узким местом. В идеале временные файлы должны лежать на физически отдельном диске от файлов базы данных и логов транзакций СУБД.

Если файлы СУБД и файлы ТМС находятся на одном физическом шпинделе, головки диска будут постоянно метаться между чтением данных для запроса и записью временных файлов сортировки. Это явление называется "thrashing" и катастрофически снижает производительность.

Тип накопителя Скорость чтения (МБ/с) Скорость записи (МБ/с) Рекомендация для ТМС
HDD (7200 об/мин) 80-120 80-100 Только для тестовых баз
SATA SSD 500-550 450-500 Минимально допустимый вариант
NVMe M.2 2000-3500 1500-3000 Оптимальный выбор для продакшена
RAID 10 (SAS) 400-600 400-600 Хорошо для высоких нагрузок

⚠️ Внимание: Не размещайте папку временных файлов на том же логическом диске, куда пишется журнал регистрации 1С или файлы дампов базы. Конкуренция за ресурс диска неизбежна.

💡

Скорость диска для временных файлов важнее, чем их объем. Лучше быстрый диск на 50 ГБ, чем медленный на 2 ТБ.

Диагностика проблем с внешней сортировкой

Как понять, что ваша система страдает от некорректной работы ТМС? Первым признаком является высокая загрузка диска при относительно низкой загрузке процессора. Если CPU простаивает, ожидая данных с диска, значит, сортировка стала узким местом.

В журнале регистрации сервера 1С можно встретить сообщения о создании временных файлов. Анализ этих записей помогает выявить пользователей или отчеты, которые генерируют огромные промежуточные наборы данных. Часто проблема кроется в неоптимальном коде запроса, а не в настройках сервера.

Используйте технологический журнал (ТЖ) для детального анализа. Включите логирование событий DBMSSQL или DBPostgreSQL с уровнем debug, чтобы увидеть длительность выполнения запросов и объем обрабатываемых данных.

  • 🔍 Анализ ТЖ — поиск событий SrvInfo и Process для оценки потребления памяти.
  • 📉 Мониторинг IOPS — отслеживание количества операций ввода-вывода в секунду на диске с темпом.
  • 📝 Логирование долгих запросов — настройка СУБД на запись запросов, выполняющихся дольше 1-2 секунд.

Часто бывает так, что разработчик написал запрос с неправильным порядком полей в конструкции УПОРЯДОЧИТЬ ПО. Это вынуждает ТМС выполнять полную пересортировку огромного массива, вместо использования существующего индекса.

Как включить подробное логирование в ТЖ?

Необходимо отредактировать файл logcfg.xml в каталоге сервера, добавив правила для компонентов "DBMSSQL" и "Proc" с уровнем детализации "debug". После этого перезапустите службу сервера 1С.

Оптимизация запросов для минимизации ТМС

Лучший способ ускорить работу — не допускать лишнего использования ТМС. Это задача не только администратора, но и разработчика конфигурации. Оптимизация запросов позволяет удерживать данные в памяти и использовать индексы СУБД.

Первое правило оптимизации: выбирайте только нужные поля. Конструкция ВЫБРАТЬ * тянет в выборку все колонки таблицы, увеличивая объем данных, которые нужно отсортировать и передать в приложение. Это прямой путь к активации механизмов внешней сортировки.

Второе правило: используйте временные таблицы правильно. Если вы создаете временную таблицу в запросе, убедитесь, что на ней строятся индексы перед последующими соединениями. Без индексов любое соединение (ЛЕВОЕ СОЕДИНЕНИЕ) превратится в полный перебор и запись на диск.

// Плохо: загрузка всех полей и сортировка в 1С

ВЫБРАТЬ * ИЗ РегистрНакопления.Продажи УПОРЯДОЧИТЬ ПО Дата

// Хорошо: выборка конкретных полей с использованием индекса

ВЫБРАТЬ Номенклатура, Количество, Сумма

ИЗ РегистрНакопления.Продажи

ГДЕ Дата МЕЖДУ &Начало И &Конец

УПОРЯДОЧИТЬ ПО Номенклатура

⚠️ Внимание: Интерфейсы настроек и параметры в разных версиях платформы 1С (8.3.10, 8.3.20, 8.3.25) могут отличаться. Всегда сверяйтесь с официальным руководством администратора для вашей конкретной версии релиза.

☑️ Чек-лист оптимизации запроса

Выполнено: 0 / 4

Частые ошибки и методы их устранения

Одной из распространенных проблем является переполнение диска, на котором расположены временные файлы. Если ТМС генерирует гигабайты данных, а место заканчивается, сервер 1С завершит работу сеанса с ошибкой "Недостаточно места на диске".

Вторая ошибка — использование сжатия NTFS для папки с темпом. Хотя это экономит место, процессор тратит ресурсы на сжатие и распаковку "на лету", что в случае активной сортировки дает обратный эффект — общее замедление системы.

Также стоит помнить о правах доступа. После обновлений Windows или антивирусного ПО права на папку C:\Windows\Temp могут сброситься. В этом случае 1С не сможет создать файлы ТМС и выдаст ошибку при запуске любого отчета.

Регулярная очистка старых временных файлов — обязательная процедура. Хотя платформа пытается удалять их сама, при аварийном завершении процесса файлы могут оставаться на диске месяцами, занимая ценное пространство.

Почему отчет формируется долго, хотя данных мало?

Вероятно, запрос построен неоптимально и вызывает полную пересортировку на диске (ТМС), либо отсутствуют необходимые индексы в базе данных. Проверьте план выполнения запроса в СУБД.

Можно ли полностью отключить внешнюю сортировку?

Нет, это системный механизм ядра платформы. Его можно только минимизировать настройкой лимитов памяти и оптимизацией кода, но не отключить полностью без риска падения сервера.

Где физически находятся файлы ТМС в Linux?

Обычно они располагаются в директории /tmp или в папке, указанной в переменной окружения TMPDIR для пользователя, от имени которого запущен сервер 1С.

Влияет ли тип СУБД на работу ТМС?

Да. PostgreSQL и MSSQL имеют свои механизмы сортировки. 1С старается делегировать сортировку СУБД, но если запрос сложный или используется специфика платформы, в дело вступает внутренняя ТМС.

Как очистить временные файлы безопасно?

Останавливать сервер не всегда обязательно. Можно удалять файлы, дата создания которых старше 1-2 дней. Файлы, используемые активными сеансами, будут заблокированы системой и не удалятся.