Статус сервера
Экран «Администрирование ⇒ Статус сервера» показывает состояние того инстанса, который ответил на запрос. За балансировщиком это существенно: почти все цифры относятся к одному узлу, а не ко всей установке.
Вкладка «Состояние»
Снимок собирается заново при каждом обновлении, по кнопке или по таймеру. Период обновления выбирается там же, автообновление можно выключить.
- Инстанс и Сборка
-
Идентификатор узла из настройки server.instance.id, порты, версия, номер сборки, коммит, ветка и время сборки. Данные о сборке берутся из файла
ru/bgcrm/version/update.properties, который формируется на сборке; пустые значения означают, что модуль собран в обход неё. - JVM и Приложение
-
Версия машины, аргументы запуска, время старта процесса и время готовности приложения. Системные свойства показываются списком «имя — значение», остальные аргументы ниже.
- Запросы
-
Поток обращений к инстансу за последнюю минуту: частота, среднее и максимальное время ответа, число ошибок. Периодический опрос
pool.doвынесен отдельной строкой и в остальные цифры не входит. Его шлёт по таймеру каждая открытая вкладка, поэтому вместе с ним средние показывают не работу, а число вкладок. - Планировщик
-
Включён ли запуск задач, сколько задач загружено из конфигурации и сколько выполняется в данный момент. Задача считается загруженной, если её блок не закомментирован и класс найден; блоки, которые не загрузились, показываются отдельной припиской.
- Веб-сокеты
-
Открытые соединения, свёрнутые по адресам. Зависшим считается сокет, не ответивший на ping дольше минуты: клиент ушёл, а соединение ещё держится.
- Память и Сборка мусора
-
Куча, пулы памяти и счётчики сборщиков. Счётчики растут с момента старта, поэтому смысл имеет прирост между обновлениями, а не само число.
- Пулы соединений с БД
-
Занятые и свободные соединения по каждой базе с пределами из конфигурации. Для slave-баз показывается состояние репликации, оно обновляется задачей планировщика (см. Планировщик). Если задача не запущена на этом инстансе, состояние остаётся тем, каким было при старте.
- Клиенты внешних API
-
Состояние предохранителей, ограничителей частоты и пулов у клиентов, которые уже обращались к внешним системам. Компонент появляется после первого обращения.
- Плагины и Динамический код
-
Загруженные плагины, число исходников и классов динамического кода, время и длительность последней компиляции, кто её запустил. Ошибки и предупреждения компилятора открываются отдельным списком с постраничным выводом; список свёрнут, но разворачивается сам, если есть ошибки.
- Диагностика
-
Списки, которые запрашиваются отдельно и в автообновление не входят: авторизовавшиеся пользователи с их сессиями и стек занятых соединений пула.
Вкладка «История релизов»
Строится из отметок о запуске: сервер пишет строку в таблицу app_instance_start при каждом старте. Это то, что действительно поднималось на стенде, а не то, что собрано в репозитории.
Сборки сворачиваются по версии, номеру, коммиту и ветке; видно, когда сборка поднималась впервые и в последний раз, сколько раз и на каких инстансах. Состав сборки показывается ключами задач: они собираются на сборке из сообщений коммитов после ближайшего тега release-N.
Без таблицы вкладка работает, но остаётся пустой. Таблица создаётся скриптом ru/bgcrm/state/repository/table.sql.
Настройки
| Настройка | Что включает |
|---|---|
|
Блок «Информация о лицензии». Данные берутся из системных свойств |
|
Адрес просмотра задачи, к которому дописывается ключ. Без него состав сборки выводится текстом, а не ссылками. |
|
Запоминание стека для каждого занятого соединения пула. Без настройки кнопка «Стек занятых соединений» отвечает, что трассировка выключена. Значение читается один раз при инициализации пула, то есть требует перезапуска. |
Права
Просмотр состояния, списка пользователей, стека соединений, сообщений компиляции и истории релизов разрешён всем, у кого есть доступ к экрану.
Сброс сессий — отдельное право StateAction:dropSessions, по умолчанию оно не выдано никому. Без него кнопки сброса не показываются.
Что относится только к одному инстансу
Часть данных живёт в памяти процесса и не общая на установку:
-
список авторизовавшихся пользователей и сброс их сессий;
-
открытые веб-сокеты;
-
счётчики запросов и состояние пулов;
-
состояние репликации slave-баз.
Сброс сессий не разрывает соединение мгновенно: сессия помечается, а выход происходит на ближайшем опросе, который делает открытая вкладка пользователя.