Использование библиотеки для профилирования в Spring Boot

002cd2dcf1aa98f568137ed16b88906e.jpeg

Эта статья посвящена использованию библиотеки для профилирования методов в приложениях Spring Boot. Она предоставляет механизм для мониторинга времени выполнения методов, используя аннотацию @ActuatorProfiling и Spring Boot Actuator для экспонирования данных профилирования через настраиваемые конечные точки (эндпоинты).

GitHub https://github.com/litefunction/spring-boot-starter-actuator-profiling

Введение

Профилирующее приложение предназначено для помощи разработчикам в мониторинге и анализе времени выполнения методов, аннотацией @ActuatorProfiling. Данные профилирования экспонируются через Spring Boot Actuator.

Особенности

• Профилирование времени выполнения методов.

• Настраиваемые параметры профилирования.

• Информация получения данных профилирования в actuator.

• Потокобезопасное управление данными профилирования.

Начало работы

Maven зависимость

Чтобы начать использование библиотеки, добавьте следующую зависимость в ваш проект:


    io.github.litefunction
    spring-boot-starter-actuator-profiling
    1.0.0

Конфигурация

Приложение можно настроить с помощью свойств в 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, процесс профилирования становится простым и удобным.

Habrahabr.ru прочитано 2093 раза