Низкая производительность приложения Spring BootJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Низкая производительность приложения Spring Boot

Сообщение Anonymous »

У меня есть очень простое загрузочное приложение Spring, которое предоставляет API-интерфейсы CRUD Rest для очень простой сущности. Запуск теста производительности с использованием JMeter показывает очень плохое время отклика

Код: Выделить всё

Product (id, name, description)
Ограничения: id PK AUTOINCREMENT
Настройки:
  • Количество потоков: 100
  • Период нарастания: 10 (секунд)
  • Бесконечный цикл
  • Продолжительность: 60 (секунд)
Изображение
Изображение

4 API, предназначенных для выполнения следующих функций

Код: Выделить всё

@Override
public Product findById(Integer id) {
return repository.findById(id)
.map(mapper::map)
.orElseThrow(() -> new RecordNotFoundException(1, "Product not found"));
}

@Transactional
@Override
public Product create(Product Product) {
ProductEntity entity = mapper.map(Product);

repository.save(entity);

return mapper.map(entity);
}

@Transactional
@Override
public Product update(Integer id, Product Product) {
ProductEntity entity = repository.findById(id).orElseThrow();

mapper.mapTo(entity, Product);

repository.save(entity);

return mapper.map(entity);
}

@Transactional
@Override
public void delete(Integer id) {
repository.deleteById(id);
}
Я пытался увидеть причину с помощью визуальной ВМ. Кажется, функции репозитория отнимают слишком много времени. Я предполагаю, что проблема связана с базой данных.
Настройки пула соединений: Поскольку я ничего не устанавливал и предполагаю, что мое приложение использует HikariCP, а размер по умолчанию равен 100.
База данных: Для приведенных выше результатов пробовал использовать MySQL (движок innodb) и отключил автофиксацию.
Версия Spring Boot: 2.4.0
Система: 16 ГБ ОЗУ, Core i7
Вопрос:

Я прав, что узким местом здесь является пул соединений или база данных, и какое будет оптимальное значение размера пула для сокращения времени ответа?


Почему все API демонстрируют одну и ту же тенденцию на графике — вместе растут или падают?

Обновление:

[*]На основании предложения разместить их все на отдельном компьютере (в облаке)
[*]Немного профилировать — репозиторий требует времени (com.sun.proxy.$.methodName)


Подробнее здесь: https://stackoverflow.com/questions/657 ... erformance
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»