Ситуация, когда папка временных файлов (TEMP) на сервере 1С:Предприятие начинает стремительно заполняться тысячами пустых файлов вида v8_513E_1ad8c.tmp, является критической для стабильности системы. Это не просто занимает место на диске (для контроля ситуации рекомендуем использовать мониторинг серверов), но и создает колоссальную нагрузку на файловую подсистему, замедляет работу операционной системы и может привести к полной остановке службы rphost. Разберем подробно, почему это происходит и как устранить проблему по шагам.
Проанализируем ситуацию, описанную в теме. Когда сервер 1С генерирует сотни файлов в секунду размером 0 байт, это свидетельствует о циклической ошибке. Процесс rphost пытается инициировать какую-то операцию, резервирует имя временного файла, но не может завершить запись или удаление из-за внутреннего сбоя. Как показывает практика и подтверждают участники обсуждения, основной причиной такого поведения чаще всего становится механизм полнотекстового поиска (ППС), а именно — операция слияния индексов.
Полнотекстовый поиск в 1С постоянно обновляет свои данные. Существует основной индекс (большой) и дополнительные индексы (небольшие порции новых данных). В определенный момент система запускает процедуру «слияния», чтобы объединить их. Если файлы индекса повреждены на физическом уровне или заблокированы, 1С входит в бесконечный цикл попыток, создавая мусорные временные файлы при каждой итерации.
Если мы выяснили, что виновником является ППС, выполним следующие действия для полного устранения проблемы:
ОбновлениеИндексаПолнотекстовогоПоиска и СлияниеИндексаПолнотекстовогоПоиска. Отключим их на время проведения работ.1C:Enterprise 8.3 Server Agent.srvinfo\reg_1541\...).Index и полностью удалим её содержимое.Если очистка индекса не помогла, нам нужно точно выяснить, какой поток внутри rphost инициирует создание файлов. Для этого воспользуемся утилитой Process Monitor. Разберем алгоритм настройки фильтров:
Запустим утилиту и установим следующие правила фильтрации:
Process Name is rphost.exeOperation is CreateFilePath contains \Temp\v8_Проанализируем результат. В колонке Detail мы увидим, с какими параметрами открывается файл. Но самое важное — это Stack Trace (двойной клик по строке события, вкладка Stack). Проанализировав стек вызовов, можно понять, какая библиотека или модуль 1С инициирует обращение. Например, если в стеке видны обращения к dbms, проблема в запросах к СУБД (здесь пригодится анализ SQL сервера глазами 1С-ника); если к files — в работе с хранилищем или индексами.
Для глубокого анализа ситуации со стороны платформы 1С настроим Технологический журнал (ТЖ). Нам необходимо отследить исключения и события, связанные с процессами. Создадим файл logcfg.xml в папке conf сервера 1С со следующим содержанием (для обработки логов можно применить конвертер технологического журнала в новый формат):
<config xmlns="http://v8.1c.ru/7.4/config/logcfg">
<log location="C:\1C_Logs\TempFilesIssue" history="2">
<event>
<eq property="Name" value="EXCP"/>
</event>
<event>
<eq property="Name" value="PROC"/>
</event>
<property name="All"/>
</log>
</config>
Рассмотрим, что это нам даст. Событие EXCP зафиксирует все неявные ошибки, которые не видит пользователь, но которые прерывают работу фоновых процессов. Именно в момент EXCP часто бросается открытый временный файл, который превращается в «мусор». Поток (Thread ID) из ТЖ можно сопоставить с данными из Process Monitor для получения полной картины.
Иногда причина кроется не в самой 1С, а в окружении. Выясним, не мешает ли что-то серверу 1С корректно удалять свои временные файлы:
rphost создает файл v8_*.tmp, антивирус его перехватывает для проверки. Если в этот же микромомент 1С пытается его удалить или изменить, возникает конфликт блокировок. Файл остается «висеть» в статусе 0 байт. Решение: Добавьте папку временных файлов пользователя, под которым работает служба 1С, в исключения антивируса.1C:Enterprise Agent, есть полные права (Full Control) на папку TEMP.Если проблема не в полнотекстовом поиске, проверим активность фоновых заданий. В консоли кластера обратим внимание на количество сеансов и их длительность. Если мы видим сотни кратковременных сеансов, которые появляются и исчезают, это может быть признаком:
COMConnector внутри циклов без явного освобождения памяти и завершения соединения также порождает утечку временных файлов. Проанализируем код на наличие конструкций типа Новый COMОбъект("V83.COMConnector").Не стоит забывать, что массовое создание пустых временных файлов признавалось багом в некоторых релизах платформы (в частности, в ветках 8.3.15, 8.3.16). В новых версиях механизмы очистки временных хранилищ были значительно доработаны. Если вышеописанные методы не помогают, рассмотрим вариант обновления платформы до актуального стабильного релиза.
Резюмируем: первым делом очищаем индекс полнотекстового поиска физически, затем настраиваем исключения антивируса, и если это не помогло — переходим к глубокой диагностике через ProcMon и Технологический журнал.