Код: Выделить всё
Product (id, name, description)Настройки:
- Количество потоков: 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
Мобильная версия