← На главную
Мы сталкиваемся с распространенной и достаточно неприятной проблемой, когда рабочий процесс 1С — rphost.exe — начинает аномально потреблять оперативную память, превышая отметку в 10 ГБ. Эта ситуация приводит к ряду критических ошибок и ухудшению стабильности работы пользователей. Давайте подробно разберем, почему это происходит и какие шаги мы можем предпринять для решения этой проблемы.
Наши коллеги столкнулись со следующими проявлениями данной ситуации на сервере 1С с СУБД Microsoft SQL Server и лицензией ПРОФ, используя платформы 8.3.17.1851 и 8.3.18.1741:
- В рабочих базах начинаются подвисания и замедление работы.
- Происходит отключение стандартных внешних компонентов, таких как модуль склонения, а также других подобных компонентов.
- На платформе 8.3.18 у некоторых пользователей появляется ошибка типа: "Файл не обнаружен 'C:\Users\sivov\AppData\Local\Temp\v8_975D_1d3.tmp'. 2 (0x00000002). Не удается найти указанный файл."
Примечательно, что временным решением, которое нормализует ситуацию, является перезапуск именно того большого рабочего процесса rphost.exe, на котором «висят» пользователи, испытывающие эти проблемы. Это указывает на то, что корень зла, скорее всего, кроется в самом сервере 1С или его взаимодействии с другими компонентами.
Настройка перезапуска рабочих процессов 1С как временное решение
Наш опыт показывает, что первое, что мы можем предпринять для стабилизации ситуации, — это настроить автоматическое управление рабочими процессами сервера 1С. Один из коллег успешно применил этот подход.
- Увеличение количества рабочих процессов. Мы можем добиться этого, скорректировав параметр "Количество соединений на процесс". Уменьшение этого значения приводит к тому, что один
rphost.exe будет обслуживать меньшее количество пользователей, тем самым равномернее распределяя нагрузку и снижая вероятность чрезмерного роста памяти у отдельного процесса. Например, если у нас 100 пользователей и "Количество соединений на процесс" установлено в 10, то теоретически будет запущено 10 рабочих процессов.
- Установка ограничения по памяти. Нам необходимо установить "Критический объем памяти процессов" для группы рабочих процессов. Этот параметр указывает максимальный суммарный объем памяти, который могут занимать все рабочие процессы, входящие в одну группу. При превышении этого лимита, все процессы группы будут перезапущены. В нашем случае, коллега установил это значение в 50 Гб. В результате такой настройки у него сейчас работает 10-15 рабочих процессов, которые автоматически перезапускаются при достижении общего объема памяти в 50 Гб. Это не идеальное, но действенное временное решение, позволяющее избежать полного зависания системы.
- Дополнительные параметры завершения процессов. Мы также должны обратить внимание на следующие настройки сервера 1С:
- "Проблемные процессы завершать через:" — коллега установил 60 секунд. Это время, по истечении которого "проблемный" процесс будет завершен.
- "Принудительно завершать проблемные процессы" — этот флаг должен быть установлен. Он активирует принудительное завершение процессов, признанных проблемными.
- "Интервал превышения допустимого объема памяти процессов" — для коллеги установлен 300 секунд. Этот интервал определяет, как долго процесс может превышать "Допустимый объем памяти процесса" до того, как будет помечен как "проблемный".
Важно понимать разницу между "Допустимым объемом памяти процесса" (лимит для одного rphost.exe) и "Критическим объемом памяти процессов" (лимит для всей группы rphost.exe). Мы должны контролировать оба этих параметра, чтобы обеспечить стабильную работу. При превышении "Допустимого объема памяти процесса" отдельный rphost.exe помечается как проблемный, а при превышении "Критического объема памяти процессов" перезапускается вся группа. Несмотря на то что общий объем памяти на сервере составляет 256 Гб, а SQL Server не ограничен в аппетитах, наш опыт показывает, что проблема именно в сервере 1С, так как завершение "деградировавшего" rphost.exe нормализует работу.
Глубокая диагностика и поиск корневых причин
Хотя автоматический перезапуск процессов помогает стабилизировать систему, он не устраняет коренную причину утечки памяти. Для полноценного решения проблемы нам необходима более глубокая диагностика.
1. Использование инструментов 1С для анализа производительности
Для выявления конкретных операций, запросов или регламентных заданий, приводящих к аномальному потреблению ресурсов rphost.exe, мы используем штатные средства 1С:
- Центр управления производительностью (ЦУП). Этот инструмент позволяет нам получать детализированную информацию о работе сервера 1С, анализировать производительность запросов, выявлять "узкие" места и проблемные участки кода. Мы можем использовать ЦУП для мониторинга потребления памяти рабочими процессами в реальном времени и выявления паттернов роста.
- Технологический журнал 1С. Это мощный инструмент для диагностики. Мы должны настроить запись событий технологического журнала с максимально подробными параметрами, чтобы фиксировать информацию о выполнении критических операций, работе с объектами метаданных, обращениях к базе данных и возникновении исключений. Анализ логов технологического журнала поможет нам понять, какие именно действия пользователей или регламентные задания приводят к чрезмерному потреблению памяти. Например, мы можем искать события, связанные с большими объемами данных, длительными транзакциями или ошибками.
- Дамп памяти (memory dump). В случаях, когда процесс
rphost.exe критически потребляет память и зависает, создание дампа памяти этого процесса является одним из наиболее эффективных методов диагностики утечек. Мы можем создать дамп с помощью Диспетчера задач Windows или специализированных утилит (например, ProcDump) и затем проанализировать его с помощью средств, таких как WinDbg, или передать специалистам 1С для анализа. Это поможет выявить, какие объекты в памяти растут и почему.
2. Анализ нагрузки на базу данных SQL Server
Даже если SQL Server имеет много свободной памяти, проблемы с производительностью могут быть вызваны неэффективными запросами к базе данных. Нам необходимо проанализировать взаимодействие сервера 1С с SQL Server:
- Мониторинг активных запросов и блокировок. Мы используем инструменты мониторинга SQL Server, такие как SQL Server Management Studio (Activity Monitor, Standard Reports, Query Store) или Performance Monitor, для анализа активных запросов, выявления длительных операций, блокировок и использования временной базы данных (
tempdb). Неэффективные запросы или чрезмерное использование tempdb могут приводить к задержкам на стороне SQL Server, что, в свою очередь, вынуждает rphost.exe ожидать выполнения операций, накапливая данные в памяти.
- Настройка памяти SQL Server. Несмотря на то что в нашем случае свободно 30 Гб из 256 Гб, SQL Server может резервировать под свои нужды очень большой объем памяти. Мы рекомендуем рассмотреть возможность ограничения максимального объема памяти для SQL Server. Если SQL Server потребляет 200+ Гб, это оставляет меньше ресурсов для операционной системы и сервера 1С. Мы можем установить максимальный объем памяти для SQL Server, например, в диапазоне от 128 до 192 Гб, чтобы гарантировать, что операционной системе и процессам 1С будет достаточно физической памяти для комфортной работы. Это предотвратит вытеснение страниц памяти 1С в файл подкачки, что является одной из причин замедления.
- Параметры MaxDOP и Cost Threshold for Parallelism. Некорректные настройки этих параметров в SQL Server могут приводить к неоптимальному выполнению запросов, увеличению времени их выполнения и, как следствие, к дополнительной нагрузке на
rphost.exe. Мы должны проанализировать и, при необходимости, скорректировать эти параметры для нашей среды 1С.
3. Решение проблемы "Файл не обнаружен 'C:\Users\sivov\AppData\Local\Temp\v8_975D_1d3.tmp'"
Эта ошибка часто указывает на проблемы с временными файлами, которые 1С активно использует для кэширования, работы с внешними компонентами и формирования отчетов. Мы можем предпринять следующие шаги:
- Очистка временных файлов. Мы рекомендуем регулярно очищать временные каталоги пользователей (
%TEMP%, обычно C:\Users\<user>\AppData\Local\Temp) и системные временные каталоги (%SYSTEMROOT%\TEMP). Переполненные каталоги или поврежденные временные файлы могут мешать 1С создавать новые.
- Проверка антивирусного ПО. Антивирусные программы, установленные как на сервере 1С, так и на рабочих станциях пользователей, могут блокировать доступ к временным файлам или папкам, считая их подозрительными. Мы должны добавить в исключения антивируса:
- Каталоги с установленной платформой 1С.
- Каталоги баз данных 1С.
- Временные папки пользователей (
C:\Users\<user>\AppData\Local\Temp).
- Системные временные папки (
%SYSTEMROOT%\Temp).
- Права доступа. Мы должны убедиться, что у учетной записи, под которой запускается процесс
rphost.exe (часто это системная учетная запись или специальная учетная запись сервера 1С), есть полные права на чтение, запись и создание файлов во всех необходимых временных каталогах, как пользовательских, так и системных. Недостаточные права доступа могут быть причиной невозможности создания или доступа к временным файлам.
4. Проблемы с внешними компонентами (модуль склонения)
Отключение внешних компонентов, таких как модуль склонения, при росте памяти rphost.exe указывает на возможную несовместимость или утечки памяти в самих компонентах.
- Обновление компонентов. Мы должны убедиться, что все используемые внешние компоненты (включая модуль склонения) совместимы с текущей версией платформы 1С (8.3.18.1741) и являются самыми актуальными. Устаревшие версии могут вызывать ошибки и утечки памяти. Мы всегда должны использовать компоненты, разработанные или адаптированные для нашей конкретной версии платформы.
- Тестирование в изолированной среде. Если есть подозрение на конкретный внешний компонент, мы можем попробовать отключить его или протестировать его работу на отдельном, менее нагруженном рабочем процессе
rphost.exe или в тестовой базе. Это поможет нам подтвердить, является ли данный компонент причиной утечки памяти или нестабильности. Если проблема исчезает при отключении компонента, мы нашли виновника.
- Распределение компонентов по разным группам. В сложных системах мы можем рассмотреть возможность использования нескольких групп рабочих процессов, распределяя внешние компоненты или определенные функциональные области конфигурации по разным группам. Это поможет изолировать потенциально проблемные компоненты, предотвращая их влияние на всю систему.
Общие рекомендации и мониторинг
Для поддержания стабильной работы сервера 1С мы рекомендуем:
- Постоянный мониторинг. Мы должны настроить постоянный мониторинг использования памяти процессом
rphost.exe, нагрузки на процессор и использования дисковой подсистемы. Это позволит нам заблаговременно выявлять аномалии и предотвращать критические ситуации.
- Оптимизация конфигурации 1С. Нередко утечки памяти связаны с неоптимальным кодом в конфигурации 1С. Мы должны проводить аудит и оптимизацию наиболее нагруженных участков кода, запросов и регламентных заданий.
- Актуализация платформы. Мы должны регулярно обновлять платформу 1С до последних стабильных версий. Разработчики постоянно выпускают исправления ошибок и оптимизации, которые могут влиять на потребление памяти и стабильность работы.
Таким образом, решение нашей проблемы, вероятно, лежит в комбинации тонкой настройки параметров сервера 1С, глубокой диагностики с использованием штатных средств 1С, оптимизации взаимодействия с SQL Server, а также проверке внешних факторов, таких как антивирусное ПО и права доступа. Совместными усилиями мы сможем обеспечить стабильную и производительную работу нашей системы 1С.