spring-boot - 如何限制运行微服务的spring boot应用创建的数据库连接

标签 spring-boot tomcat database-connection microservices connection-pooling

我正在做我的学校项目,用微服务架构(使用 maven 和 spring boot JPA)制作一个应用程序 我正在使用的硬件: aws RDS(最大数据库连接数为 66,这导致了我的问题) aws ec2 实例免费套餐 我有 3 个微服务:员工、薪水和休假。 但是,只运行了 3 个微服务,我的数据库连接就达到了 40+。 我不知道如何限制服务可以创建的数据库连接数。

经过一些研究,我遇到了术语“连接池”,所以我尝试设置 tomcat 连接池。

这是配置(我都做了)但它不起作用 如果配置正确,我的应用程序最多只能建立 5 个事件连接,我这样说对吗?

spring.datasource.tomcat.initial-size=5
spring.datasource.tomcat.max-wait=20000
spring.datasource.tomcat.max-active=5
spring.datasource.tomcat.max-idle=5
spring.datasource.tomcat.min-idle=1
spring.datasource.tomcat.default-auto-commit=true   

这是查询的代码

public interface EmployeeRepository extends JpaRepository<Employee, Integer> {
    @Query(
            value = "select * from itsa.Employee;",
            nativeQuery = true)
    List<Employee> findAllEmployee();

    @Query(
            value = "SELECT * FROM Employee where id = :id",
            nativeQuery = true)
    List<Employee> findEmp(@Param("id") int id);

最佳答案

Spring boot 中的默认 CP 是 HikariCP。一旦您在 pom.xml 中包含 spring-boot-starter-data-jpa,您就会为您配置默认值的 HikariCP。

如果你想让你的配置生效,你需要排除HikariCP并包含tomcat-cp。为此,您需要对 pom.xml 进行以下更改。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
    <version>9.0.10</version>
</dependency>

希望这有助于解决您的问题。

关于spring-boot - 如何限制运行微服务的spring boot应用创建的数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58469772/

相关文章:

java - Jasper with Spring——来自 org.apache.commons.digester 的大量日志

java - Spring 事务 xml 模式

mongodb 使用共享 session 变量从我的函数中插入

spring-boot - Kotlin 和 Spring 启动, transient 属性未正确初始化

spring-boot - 使用 Spring RestTemplate 访问 Https Rest 服务(客户端和服务器之间的 2 路 SSL)

java - Spring Boot Hello World 示例不工作

java - Spring Boot 与 Spring Security 登录表单

java - SVNKit 内存泄漏 : SVNLog. run() 创建永远不会被杀死的线程

java - java和oracle XE之间的OCI和THIN驱动连接与数据源连接有什么区别?

r - testthat:设置所有测试可用的数据库连接