Группа «Система» в меню «Файл ▸ Система» и «Пуск ▸ Система» открывает тринадцать окон, показывающих сам сервер. Они доступны только администраторам, и каждое из них только читает: ничто в этой группе не может изменить сервер, чем она и отличается от соседней группы «Админ».
С чего начать
Обзор — окно, с которого стоит начать. Он показывает, на каких версиях Erlang и Elixir построен сервер, как долго он работает, сколько трафика через него прошло и насколько он близок к трём пределам, которые его остановят: атомам, портам и процессам. Ниже одна полоса делит память сервера между шестью потребителями.
App Info отвечает на другой первый вопрос: кто на самом деле здесь. Сколько каналов активно, сколько разных людей присутствует, сколько звонков идёт, сколько виртуальных пространств запущено и список каналов, в которых находятся люди.
Списки
Процессы, приложения, таблицы ETS, порты, сокеты и распределители памяти — это одно и то же окно для шести разных наборов данных. Каждый список фильтруется по мере ввода и сортируется по любому столбцу со стрелкой — щёлкните заголовок один раз, чтобы отсортировать, и ещё раз, чтобы изменить порядок на обратный.
Сама таблица — та же, что используется во всех списках продукта: перетащите правый край заголовка, чтобы расширить столбец, дважды щёлкните этот край, чтобы подогнать ширину под самое длинное значение, и щёлкните правой кнопкой мыши строку заголовка, чтобы отключить столбцы. Когда строка выбрана, она реагирует на клавиши со стрелками, а Ctrl+C копирует выделенное как текст с разделителями-табуляциями. Списки и таблицы охватывает всё это.
- Процессы — отсортируйте по Mailbox, чтобы найти процесс, который получает сообщения быстрее, чем успевает их обрабатывать. Так изнутри выглядит зависший сервер.
- Таблицы ETS — отсортировано по памяти. Таблица в памяти, которую никто не чистит, — обычная причина того, что память только растёт.
- Сокеты — все соединения, которые сервер держит открытыми, с их конечными точками и счётчиками байтов.
- Аллокаторы памяти — сравните размер блока с размером носителя. Большой разрыв означает фрагментацию: память, которую сервер удерживает у операционной системы, но не может использовать.
Метрики
Живые диаграммы, по одной группе: HTTP, LiveView, Database, Oban, VM и Domain. Domain — это собственная телеметрия сервера: созданные каналы, прибывающие и уходящие люди, присоединения к звонкам, перемещения в виртуальном пространстве.
Графики сначала пусты и заполняются по мере событий. Это не сбой: до открытия окна ничего не измерялось, а линия, проведённая до левого края, была бы выдумкой. Подписка оформляется только на ту группу, которую вы просматриваете, поэтому окно ничего не стоит для групп, за которыми вы не следите.
Состояние Oban
Oban показывает фоновую систему работы за длительной работой, такой как опрос RSS фид, графики ботов, журналы событий, проверки технического обслуживания, предварительные просмотры ссылок и сохранение предпочтений. Заголовочные карты разделяют здоровье супервайзера, активные рабочие места, повторяемые или отбрасываемые сбои, покрытие преемника и ожидающую работу домена.
Сначала прочитайте таблицу очередей по штату: Доступные средства работы могут работать сейчас, Запланированные означает, что он ждет своего времени, Исполнение означает, что у работника есть это, Переменные средства, которые Обан попробует снова, и Отброшенные средства, что попытки были исчерпаны или работник сдался. Затем таблицы контрактов показывают, есть ли в графиках RSS фиды и ботов преемники, резервируются ли рабочие места в журналах событий и отстают ли работы по техническому обслуживанию или постоянству.
OS Data и Database Stats
OS Data — это взгляд на сервер снаружи: процессоры хоста, средняя загрузка, память и диски. Сервер может выглядеть здоровым, пока машина, на которой он работает, нет. Показатели, о которых хост не сообщает, отображаются прочерком, а не нулём — это разные вещи.
Database Stats запускает по одному диагностическому отчёту к PostgreSQL: доля попаданий в кэш, неиспользуемые индексы, раздувание таблиц, долгие запросы, кто кого блокирует. Пока вы не выберете отчёт, ничего не выполняется, потому что это настоящие запросы к работающей базе данных.
Живой журнал
Живой хвост того, что сервер записывает в журнал прямо сейчас. Поток запускается только после нажатия Stream и останавливается, как только вы нажмёте Stop или закроете окно: поток журнала, за которым никто не следит, — это затраты без читателя.
Если выбранный вами уровень ниже того, на котором ведёт журнал сам сервер, окно сообщает об этом, а не молчит. Записи ниже собственного уровня сервера отбрасываются до того, как их сможет увидеть любое окно, сколько бы вы ни ждали.
Как читать показатели
В списках показаны первые строки отфильтрованного набора, а счётчик над таблицей всегда говорит, сколько записей совпало. «50 из 771» означает, что вы видите первые пятьдесят — не считайте список полным только потому, что он заполнил окно.
Ни одно из этих окон не обновляется само. Каждый обход требует от сервера реальной работы, поэтому обновление — это кнопка, которую вы нажимаете, а не таймер, о котором вы забыли. Исключение — Metrics: это по своей природе живая подписка, и она останавливается при закрытии окна.