我正在使用Spring Boot创建Rest Api。我正在使用Hikari的默认配置,因此它的池大小为10个连接。当我尝试将10个并行请求发布到特定路由时遇到错误。错误表示Connection不可用,请求在30001ms后超时。 此路由将数据保存到MySQL数据库中,通常需要几毫秒才能完成一次保存操作。为什么会出现这个问题?它应该完成保存操作,然后释放数据库连接以进行下一个操作吗?此错误似乎仅出现在保存功能创建新实体的保存操作中。
spring.jpa.hibernate.ddl-auto=create-drop spring.datasource.url=jdbc:mysql://192.168.1.88:3306/question?serverTimezone=UTCspring.datasource.username=luigi spring.datasource.password=root
public interface RandomRepository extends CrudRepository<Random, Integer> {}
@RestControllerpublic class RandomController { private RandomRepository randomRepository; public RandomController(RandomRepository randomRepository) { this.randomRepository = randomRepository; } @GetMapping("/") public String createRandom() { return String.valueOf(Math.random()); } @PostMapping("save") public Random save(){ Random random = new Random(); random.setNumber(Math.random()); randomRepository.save(random); return random; }}
我通过使save方法同步找到了解决方案。这是正确的方法吗?有人遇到过同样的问题吗?
@PostMapping("save")public synchronized Random save(){ Random random = new Random(); random.setNumber(Math.random()); randomRepository.save(random); return random;}
我预计保存操作将很容易完成,但它会一直停留,直到它在30秒后崩溃
慕码人2483693
喵喵时光机
相关分类