Эта статья посвящена использованию библиотеки для профилирования методов в приложениях Spring Boot. Она предоставляет механизм для мониторинга времени выполнения методов, используя аннотацию @ActuatorProfiling и Spring Boot Actuator для экспонирования данных профилирования через настраиваемые конечные точки (эндпоинты).
GitHub https://github.com/litefunction/spring-boot-starter-actuator-profiling
Введение
Профилирующее приложение предназначено для помощи разработчикам в мониторинге и анализе времени выполнения методов, аннотацией @ActuatorProfiling. Данные профилирования экспонируются через Spring Boot Actuator.
Особенности
• Профилирование времени выполнения методов.
• Настраиваемые параметры профилирования.
• Информация получения данных профилирования в actuator.
• Потокобезопасное управление данными профилирования.
Начало работы
Maven зависимость
Чтобы начать использование библиотеки, добавьте следующую зависимость в ваш проект:
<dependency>
<groupId>io.github.litefunction</groupId>
<artifactId>spring-boot-starter-actuator-profiling</artifactId>
<version>1.0.0</version>
</dependency>
Конфигурация
Приложение можно настроить с помощью свойств в application.properties или application.yml.
Конфигурация по умолчанию
profiling.actuator.maxCountList=100
profiling.actuator.enabler=true
для настройки отображения actuator
management.endpoints.web.exposure.include=actuatorProfilingDetail,actuatorProfiling
Использование
Добавление профилирования к методам
Для профилирования метода, просто аннотируйте его с помощью @ActuatorProfiling и опционально задайте имя:
import com.lite.function.profiling.ActuatorProfiling;
public class ExampleService {
@ActuatorProfiling(name = "exampleMethod")
public void exampleMethod() {
// логика метода
}
}
Доступ к данным профилирования
Данные профилирования доступны через предоставленные эндпоинты Actuator.
Эндпоинты
Список данных профилирования
Эндпоинт: /actuator/actuatorProfiling
{
"executingProfilingMethod": {
"exampleMethod": 403
}
}
• exampleMethod - имя метода из аннотации @ActuatorProfiling
• 403 - время выполнения последнего вызова метода в миллисекундах
Детализированные данные профилирования
Эндпоинт: /actuator/actuatorProfilingDetail/{name}
Пример ответа:
{
"name": "exampleMethod",
"executingProfilingMethodVals": [
{
"delta": 506,
"localDateTime": "2024-06-23T14:28:39.523107"
},
{
"delta": 103,
"localDateTime": "2024-06-23T14:28:43.101866"
},
{
"delta": 904,
"localDateTime": "2024-06-23T14:28:44.564218"
},
{
"delta": 403,
"localDateTime": "2024-06-23T14:28:47.180746"
}
]
}
• name - имя метода
• executingProfilingMethodVals - список объектов с временем выполнения метода (delta в миллисекундах) и временной меткой (localDateTime)
Заключение
Использование библиотеки для профилирования методов в Spring Boot позволяет эффективно мониторить и анализировать время выполнения методов. Это особенно полезно для выявления узких мест в производительности и оптимизации кода. Благодаря аннотации @ActuatorProfiling и интеграции со Spring Boot Actuator, процесс профилирования становится простым и удобным.