Архитектура кластера
В клиент-серверном варианте работы клиентское приложение взаимодействует с кластером серверов, который, в свою очередь, осуществляет взаимодействие с сервером баз данных.
Один из компьютеров, входящих в состав кластера серверов, является центральным сервером кластера. Центральный сервер, помимо обслуживания клиентских соединений, управляет работой всего кластера и хранит реестр кластера.
Для клиентского соединения кластер адресуется по имени центрального сервера и номеру сетевого порта. Если используется стандартный сетевой порт, то достаточно указания одного имени центрального сервера.
При установке соединения клиентское приложение обращается к центральному серверу кластера. Центральный сервер, на основе анализа статистики загруженности рабочих процессов, направляет клиентское приложение к конкретному рабочему процессу, который будет его обслуживать. Этот процесс может находиться как на центральном сервере, так и на любом рабочем сервере кластера.
Рабочий процесс выполняет аутентификацию пользователя и обслуживает соединение до окончания сеанса работы клиента с данной информационной базой.
Состав простейшего кластера серверов
Простейший кластер серверов может располагаться на одном компьютере и содержать один рабочий процесс:
- процессы кластера серверов:
- ragent.exe;
- rmngr.exe;
- rphost.exe;
- список кластеров;
- реестр кластера.
Функционирование компьютера в составе кластера обеспечивается процессом ragent.exe, который называется агентом сервера. Соответственно компьютер, на котором запущен агент сервера, называется рабочим сервером. Одной из функций агента сервера является ведение списка кластеров, расположенных на данном рабочем сервере.
Агент сервера и список кластеров не входят в состав кластера серверов, а лишь обеспечивают работу сервера и кластеров, которые расположены на нем.
От экспертов «1С‑Рарус»: Оптимизация перезапуска рабочих процессов на платформе «1С» 8.3.15 и выше
Замедление работы «1С:Управление торговлей» через 6 часов после запуска сервера «1С»
Большое предприятие ведет свою деятельность в клиент-серверной базе основанной на «1С:Управление торговлей» ред.11.2. При длительной работе более 6 часов с момента запуска сервера от пользователей стали поступать жалобы об общем замедлении работы системы. При этом замедление наблюдалось буквально во всем: открытие форм объектов, формирование отчетов, проведение документов и так далее.
В рамках статьи рассмотрены причины такого поведения системы, возможные варианты настройки сервера типовыми средствами «1С», а также представлен авторский альтернативный подход к решению проблемы.
Оглавление
Необходимые сведения об устройстве сервера «1С»
На рисунке представлены элементы, которые задействованы в работе кластера серверов, а именно:
- процессы кластера серверов:
- ragent.exe,
- rmngr.exe,
- rphost.exe.
- список кластеров,
- реестр кластера.
Функционирование компьютера в составе кластера обеспечивается процессом ragent.exe, который называется агентом сервера. Соответственно компьютер, на котором запущен агент сервера, называется рабочим сервером. Одной из функций агента сервера является ведение списка кластеров, расположенных на данном рабочем сервере.
Непосредственно кластер серверов включает в себя следующие элементы:
- один или несколько процессов rmngr.exe;
- реестр кластера;
- один или несколько процессов rphost.exe.
Процесс rmngr.exe называется менеджером кластера. Этот процесс управляет функционированием всего кластера.
Процесс rphost.exe называется рабочим процессом. Рабочий процесс обслуживает непосредственно клиентские приложения, взаимодействует с сервером баз данных и в нем, в частности, могут исполняться процедуры серверных модулей конфигурации.
В процессе своей работы рабочий процесс со временем потребляет все больше памяти, что в конечном счете приводит к падению производительности сервера. Таким образом, объем памяти занимаемый рабочим процессом в некоторой степени коррелирует со степенью его деградации.
Параметры стенда
Будет рассматриваться поведение платформы на примере доработанной конфигурации основанной на «1С:Управление торговлей» ред. 11.2.
- Сервер 1С под Windows.
- Одновременно работающих пользователей около 800.
- ОЗУ 192Гб. Абсолютное значение памяти не так существенно. Важно, что через какое-то время рабочие процессы замедляются (деградируют) даже при видимом свободном объеме памяти.
- Остальные параметры также не существенны.
Расследование
Повышенный расход памяти и возможные причины
Повышенное потребление памяти происходит по разными причинам, например, избыточное кэширование данных платформой «1С» или наличие недочетов в самом прикладном решении. Как примеры таких недочетов можно назвать наличие циклических ссылок объектов друг на друга, наличие избыточных сеансовых данных.
Расследование и исправление таких недочетов в прикладном решении является трудоемкой задачей, которую сложно выполнить в короткие сроки. Поэтому эксплуатацию прикладного решения приходится производить в сложившихся условиях.
Штатные возможности по оптимизации платформы «1С:Предприятие»
Для отказоустойчивой и производительной работы кластер серверов «1С:Предприятие» предусматривает возможность перезапуска рабочих процессов. Однако, настройки условий перезапуска рабочих процессов могут быть сильно ограничены в разных версиях платформы.
Например, в версии ПРОФ платформы 8.3.15 можно настроить перезапуск рабочих процессов либо по времени, например, каждый час, либо при превышении объема памяти всех рабочих процессов заданного лимита, что не всегда является оптимальным.
Поиск решения
В сервере «1С:Предприятие» есть некий пул соединений, которые могут использоваться разными сеансами по мере необходимости. В то время как сеанс бездействует у него нет соединения. Лишние соединения закрываются не сразу, а примерно через 15–20 минут.
При перезапуске рабочего процесса все сеансы находящиеся на нем необходимо переместить на другой рабочий процесс, при этом в процессе переноса открывается соединение. Именно поэтому перезапуск рабочих процессов наглядно видно на графике количества соединений.
Поскольку пользователи заходят в прикладное решение в основном в одно и то же время, то и процессы оказываются запущены практически одновременно и поэтому их перезапуск происходит практически одновременно (при настройке перезапуска каждый час).
Удобно видеть перезапуск, отслеживая загрузку процессора, а также количество соединений.
На графике ниже показана загрузка ЦП сервера за тот же период. Перезапуск даже одного рабочего процесса это весьма трудозатратная операция для сервера, а если происходит одновременный перезапуск всех рабочих процессов, то это приводит к повышенной нагрузке на сервер.
В рассматриваемом прикладном решении процесс перезапуска всех рабочих процессов мог длиться до 20 минут, при этом средняя загрузка ЦП поднималась выше 60%. Длительность операции перезапуска рабочего процесса зависит от количества сеансов и размера сеансовых данных в каждом из них, а также от степени деградации процесса, чем дольше он не перезапускался, тем дольше будет длиться его перезапуск. Из-за этого несколько раз в день отзывчивость сервера значительно падала, что сопровождалось жалобами пользователей.
После перехода прикладного решения на 8.3.15.1830 появилась возможность использовать параметр не только в КОРП, но и в версии ПРОФ. Однако, попытки использовать его не привели к желаемому результату. Поскольку параметр ограничивает общий объем памяти всех рабочих процессов.
Если задать его слишком маленьким, то перезапуск рабочих процессов будет слишком частым и сервер будет вести себя также, как и при перезапуске по времени. Если задать его побольше, то перезапуск рабочих процессов не будет производиться до тех пор, пока в сумме все они не превысят лимит, а в это время будет происходить их деградация и снижение производительности.
Когда же лимит будет превышен начнется перезапуск рабочих процессов, но процесс будет слишком частый, как и в предыдущем случае.
Очевидно, для того чтобы реализовать регулярный, но не слишком частый перезапуск деградировавших рабочих процессов параметр необходимо постоянно изменять в зависимости от количества сеансов или количества активных рабочих процессов. Но как вычислить эту зависимость не совсем ясно.
Заметки сисадмина о интересных вещах из мира IT, инструкции и рецензии. Настраиваем Компьютеры/Сервера/1С/SIP-телефонию в Москве
А на самом деле все еще интереснее, для нормальной локализации проблемы необходимо в настройках рабочего сервера включить настройку “менеджер под каждый сервис”, потом по PID-у процесса менеджера, занявшего процессорное время, определить к какому сервису он относится и только потом искать решение.
есть известная при использовании журнала регистрации в новом формате. Надо начать использовать журнал в старом формате. Для этого надо остановить сервер. Удалить файлы lgd, на их месте создать пустые 1Cv8.lgf
Решение проблемы: агент сервера 1С:Предприятие останавливается
Решаемая задача: в этом материале мы рассмотрим решение такой проблемы, когда агент сервера 1С:Предприятие останавливается.
Возможные причины:
- Переполнен кэш сервера 1С или закончилось место на диске.
- Переименован сервер, на котором установлен агент сервера 1С.
- Повредился файл с настройками кластера 1С.
- Заняты порты, используемые сервером.
Для выполнения описанных действий требуется учетная запись Администратора.
Первый вариант решения проблемы ‒ изменение портов работы сервера 1С
Запускаем редактор реестра.
Рисунок 1 — Команда запуска редактора реестра
Находим ветку реестра:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterprise 8.3 Server Agent\
Рисунок 2 — Редактор реестра
В свойстве «ImagePath»=, меняем строку:
«-srvc -agent -regport 1541 -port 1540 -range 1560:1591»
Рисунок 3 — Стандартные порты
«-srvc -agent -regport 2041 -port 2040 -range 2060:2091»
Рисунок 4 — Изменение портов
Также в конце строки дописываем “-debug” для включения отладки и подтверждаем изменения.
Рисунок 5 — Добавление отладки
Перезапускаем службу 1C:Enterprise 8.3 Server Agent.
Рисунок 6 — Перезагрузка службы
Второй вариант решения проблемы заключается в увеличении памяти процесса 1С
Шаг 1. Проверяем место на диске С:\, если место мало — чистим.
Шаг 2. Переходим к удалению процессов, если таковые имеются.
Далее по очередности удаляем процессы:
Рисунок 7 — Останавливаем процесс RPHOST
Рисунок 8 — Останавливаем процесс rmngr
Рисунок 9 — Останавливаем процесс ragent
Шаг 3. Чистим папки и файлы srvinfo, чистим кэш и настройки кластера 1С в С:\Program Files\1cv8\srvinfo\reg_1541\ или С:\Program Files(x86)\1cv8\srvinfo\reg_1541\
Шаг 4. Запускаем сервер и проверяем работу служб. Это можно выполнить разными способами. Запустить из «Служб»:
Рисунок 10 — Запуск Службы
Или Пуск — Все программы:
Рисунок 11 — Запуск службы из меню Пуск
Шаг 5. Проверяем настройки кластера и информационные базы.