Мониторинг транзакций
Страница Мониторинг транзакций находит @Transactional методы, которые держат соединение с базой данных дольше, чем нужно: блокирующие сетевые вызовы, запросы N+1 и пагинацию в памяти внутри транзакции. Для каждой проблемы показано, где она возникает, чтобы вы могли найти это место в коде.

Страница «Мониторинг транзакций» в интерфейсе Axelix
Пока транзакция открыта, она держит соединение с базой данных из пула. Если внутри транзакции выполняется лишняя
работа: вызов другого сервиса, отдельный запрос на каждую запись или загрузка всей таблицы ради одной страницы, —
соединения заканчиваются, и под нагрузкой приложение замедляется. По коду это редко заметно. Мониторинг транзакций
показывает, какие @Transactional методы так делают и где именно.
Страница доступна только для чтения всем пользователям, прошедшим аутентификацию: ее могут открыть VIEWER, EDITOR,
ADMIN и SUPER_ADMIN. Полную матрицу ролей и полномочий см. в разделе Роли и
полномочия.
Что показывает страница
На странице перечислены все @Transactional методы, которые выполнял сервис, со средним, минимальным и максимальным
временем выполнения и найденными в них проблемами. Сводка сверху показывает, сколько
транзакций с проблемами и сколько без них, а список можно сузить до одного типа проблемы.
Раскройте транзакцию, чтобы увидеть:
- где возникла каждая проблема: вызванный URL, сущность и ассоциацию или сущность, разбитую на страницы в памяти;
- распространение и уровень изоляции транзакции;
- доступ: только чтение или чтение и запись.
Если ни в одной транзакции проблем нет, страница сообщает об этом вместо списка.
Обнаруженные проблемы
- Блокирующий сетевой вызов: транзакция делает HTTP-вызов и держит соединение, пока ждёт ответа. Axelix показывает
метод и URL запроса. Сейчас Axelix обнаруживает вызовы через
RestTemplate. - Запросы N+1: ленивая ассоциация загружается отдельным запросом на каждую запись. Axelix показывает сущность и ассоциацию и учитывает её, только если она загружалась больше одного раза.
- Пагинация в памяти:
Pageableсочетается сJOIN FETCH, поэтому Hibernate загружает весь результат и выделяет страницу в памяти. Axelix показывает сущность или таблицу.
Как это работает
Axelix Spring Boot Starter отслеживает каждый вызов @Transactional метода внутри приложения и замеряет его время.
Пока транзакция открыта, он записывает HTTP-вызовы через RestTemplate и ленивые загрузки ассоциаций Hibernate, а
также перехватывает предупреждение Hibernate о пагинации в памяти в логах приложения (Logback или Log4j2). Агент или
APM-инструмент не требуется.
MCP-инструменты
ИИ-агенты могут получить через MCP запросы N+1 и пагинацию в памяти, найденные в транзакциях приложения, для всего приложения или для одного класса или метода. Блокирующие сетевые вызовы туда не входят. См. Каталог MCP-инструментов.
Свойства
Мониторинг транзакций включён по умолчанию. Чтобы полностью его выключить, установите
axelix.sbs.transaction.monitoring.enabled=false — подробности см. в разделе Мониторинг
транзакций.
Откройте эндпоинт метаданных
Страница не опирается на отдельный actuator-эндпоинт. Axelix Spring Boot Starter агрегирует данные о транзакциях на
JVM и отправляет их в Master как часть регистрационных метаданных инстанса — того же ответа, который отдаёт эндпоинт
axelix-metadata, уже опрашиваемый Master. Пока axelix-metadata открыт (см. Открытие эндпоинтов на Axelix ниже
1.2.0),
страница работает без каких-либо дополнительных эндпоинтов.
См. также
Кэши
На странице Кэши представлены все настроенные кэши управляемого сервиса на Spring Boot. На ней отображается диаграмма соотношения попаданий и общего количества попаданий в каждый кэш, количество попаданий и промахов, примерное количество записей, есть возможность управлять статусом и очищать отдельные кэши или все кэши сразу.
Карта сущностей
Страница Карта сущностей проверяет JPA-маппинг каждой сущности в сервисе Spring Boot и показывает ассоциации, замапленные так, что это стоит лишних запросов: жадную загрузку, @ManyToMany на основе List, каскад REMOVE или ALL и однонаправленный @OneToMany.