async-profiling

0

Описание

Это демонстрационное приложение на Spring Boot, которое имитирует проблемы для демонстрации процесса профилирования с помощью async-profiler.

Языки

  • HTML76,3%
  • Java23,7%
год назад
год назад
год назад
год назад
readme.md

Общее описание приложения

Это демонстрационное приложение на Spring Boot, которое имитирует различные проблемы для демонстрации процесса профилирования с помощью async-profiler.

Architecture

Основные классы и их взаимодействие

User: Класс, представляющий пользователя. Содержит поля id, login, password и largeData. Поле largeData не сохраняется в базе данных и используется для усиления утечки памяти.

UserRepository: Интерфейс, расширяющий JpaRepository, для взаимодействия с базой данных H2.

UserService: Сервис, содержащий бизнес-логику для регистрации пользователей. Сохраняет все зарегистрированные объекты User в кэш (что вызывает утечку памяти), а также в БД.

UserController: Контроллер, обрабатывающий HTTP-запросы. Взаимодействует с UserService для регистрации пользователей.

Приложение использует встроенную базу данных H2 для хранения данных пользователей.

Взаимодействие классов

UserController принимает HTTP-запросы на регистрацию пользователей и передает данные в UserService. UserService проверяет наличие логина в кэше и базе данных, создает новый объект User с большими данными и сохраняет его в кэш и базу данных. UserRepository используется для взаимодействия с базой данных H2.

Описание проблем и анализа

CPU-затратные операции

Code

UserService:

Настройки профилирования

Анализ flamegraph

Файл: waste-cpu-flamegraph.html

Скрин:

flamegraph-pic.png

Выводы → большой процент использования CPU методом wasteCpu → wasteCpu заметно доминирует в графе