Процесс rphost является одним из процессов кластера серверов 1С (вместе с ragent и rmngr). В данной статье рассмотрено, что это за процесс, и почему не надо бросаться перезагружать сервер каждый раз, как пользователь говорит что rphost жрет память, rphost грузит процессор, и вообще все зависло.
Rphost - что это за процесс и зачем нужен?
Процесс rphost.exe является ключевым компонентом серверной части платформы «1С:Предприятие» версии 8.3. Он отвечает за обработку клиентских запросов и взаимодействие с сервером базы данных, обеспечивая выполнение серверных процедур конфигурации. В архитектуре 1С может быть запущено несколько процессов rphost.exe, распределённых по различным серверам, что позволяет эффективно управлять нагрузкой системы.
Другими словами, rphost — это рабочая лошадка в кластере серверов, которая выполняет прикладной код. Этих процессов может быть несколько — зависит от настроек кластера, количества баз, версии платформы, количества пользователей и ряда других факторов.
Вообще, настройка кластера — это большая и сложная тема, здесь мы лишь вскользь ее упоминаем в контексте настройки работы rphost.
Причины высокой загрузки процессора и памяти процессом rphost.exe
Интенсивные вычислительные операции: Выполнение сложных или неоптимизированных запросов, обработка больших объёмов данных или ресурсоёмкие вычисления могут привести к значительной загрузке процессора.
Фоновые задания: Автоматически выполняемые регламентные задания, такие как обновление полнотекстового поиска или обмен данными между системами, могут потреблять значительные ресурсы, особенно если они настроены некорректно или выполняются слишком часто.
Утечки памяти: Некорректная работа кода, ошибки в конфигурации или неэффективное управление ресурсами могут приводить к постепенному увеличению потребляемой памяти процессом rphost.exe, что в конечном итоге может вызвать её исчерпание.
Что делать, если rphost грузит процессор или занимает всю память?
Вредные советы и заметание грязи под ковер
rphost в 1С сожрал всю память и завис? Давайте поскорее грохнем его через диспетчер задач! А еще лучше перезапустим сервер 1С. А еще лучше вообще на всякий случай перезагрузим весь сервер, мало ли?
Знакомая история? На просторах интернета можно найти самые разные советы, что делать, если rphost загрузил процессор на 100%, или занял всю доступную память. И далеко не все советы полезные.
- Cоветуют отключить регламентные задания. Мол, регламентные задания грузят rphost.
- Или в настройках кластера указать автоматический перезапуск рабочих процессов.
- Еще могут посоветовать перейти на более мощное железо, добавить ядер, памяти, дисков, в общем всего добавить.
- Настроить каждую базу на отдельный rphost
- Настроить все базы на один rphost
- Настроить 1 rphost на каждые 100 пользователей
Не знаю как вам, но мне это напоминает гадание на кофейной гуще — авось что-нибудь из перечисленного поможет, и rphost начнет хорошо и стабильно работать.
А что надо делать на самом деле?
Удивительно, но те же самые советы что в одних случаях являются вредными, в других являются правильными и хорошими.
Здесь крайне важно осознать простую вещь. сам по себе rphost ничего не грузит и не «жрет память». Это делает серверный код, который выполняется на этом конкретном rphost. Поэтому если один rphost занял всю память и потом отвалился, а другие в это время работали хорошо — причину надо искать в коде, который в это время выполнялся. И теперь давайте рассмотрим те же самые советы, но уже осознанно.
Сперва о самом главном
Прежде чем бросаться исправлять причину возникновения проблемы с rphost, следует достоверно ее диагностировать. И как правило, тут приходится работать с технологическим журналом, логами ОС, журналом регистрации и другими инструментами логирования, чтобы точно узнать, в чем же дело — есть ли утечка памяти в результате циклических ссылок, или пользователь просто сформировал отчет без отборов с начала существования базы? Не справляется дисковая подсистема, или причина в кривых запросах, которые нагружают tempdb?
И так далее, и тому подобное.
Фоновые задания грузят rphost
Проводим расследование — смотрим, какие сеансы крутятся на данном конкретном rphost, из каких баз. Это можно сделать через консоль администрирования кластера серверов 1С.
Дальше можно расследовать по технологическому журналу (лучший выбор), по журналу регистрации, либо в обработке Регламентные и фоновые задания — посмотреть какие фоновые задания выполнялись в этот момент.
Ведь отжирают память и грузят процессор не сами процессы rphost, а тот код, который в них выполнялся. Например бесконечные циклы, работа с большими объемами данных, неоптимальные запросы и т.д. и т.п.
Можно еще диагностировать методом исключений — начать поочередно отключать регламентные задания, и смотреть, после отключения какого задания нагрузка уменьшилась.
Настроить автоматический перезапуск рабочих процессов
Вообще, настройка отказоустойчивого, стабильного и производительного кластера серверов — целая наука, и настройки перезапуска — лишь крохотная часть того, что нужно знать и уметь. Перезапуск проблемного rphost без выяснения и устранения причин ошибки — заметание грязи под ковер, ведь проблема никуда не делась, мы лишь временно ее отложили до следующего раза.
Тем не менее, правильные настройки кластера будут защищать его от «кривого» кода, который в противном случае может повесить всю систему.
Опять же, при отказоустойчивом сервере вполне допустимо, чтобы rphost-ы перезапускались, ведь можно настроить резервные рабочие процессы, незаметное переключение пользователей между процессами, так что у них будет небольшое подтормаживание вместо вылета платформы по ошибке.
Пошаговая инструкция:
- Откройте консоль администрирования серверов 1С:Предприятия.
- Выберите нужный кластер серверов.
- Откройте свойства выбранного кластера.
- Перейдите к настройкам рабочих процессов.
-
Установите следующие параметры:
- Интервал перезапуска: время в секундах, через которое процесс rphost.exe будет автоматически перезапускаться. Например, для ежедневного перезапуска установите значение 86400 секунд (24 часа).
- Допустимый объём памяти: максимальный объём памяти в килобайтах, который может использовать процесс rphost.exe. При превышении этого значения в течение заданного интервала процесс будет перезапущен. Например, можно установить 1 ГБ (1048576 КБ).
- Интервал превышения допустимого объёма памяти: время в секундах, в течение которого процесс может превышать установленный объём памяти перед его принудительным перезапуском.
Эти настройки помогут предотвратить чрезмерное потребление ресурсов процессом rphost.exe и обеспечат стабильную работу системы. Однако следует помнить, что оптимальные значения параметров зависят от специфики работы вашей информационной базы и нагрузки на систему. Рекомендуется регулярно мониторить состояние серверов и при необходимости корректировать настройки.
Очень круто и интересно про настройки кластера рассказывает Антон Дорошкевич. Для продвинутого понимания настройки кластера 1С всем рекомендую посмотреть его видео, например вот это.
Заключение
Проблемы с rphost чаще всего связаны с прикладным кодом. Неоптимально написанные запросы, утечки памяти, некорректное использование отборов при работе с большими объемами данных, и прочее, и прочее. Но чтоб разобраться в настоящих причинах, а не гадать на кофейной гуще, следует быть готовым к расследованиям, настройке технологического журнала, изучению корректной настройки кластера серверов 1С.
Осознанно используйте советы из интернета — не важно, отключаете ли ненужные регламентные задания, оптимизируете код конфигурации, добавляете железо или настраиваете автоматический перезапуск рабочих процессов.
Сэкономь часы на дебаге 1C!
Скачай PDF с топ-11 ошибок начинающих разработчиков + файл с примерами кода!