当前位置: 首页 > 知识库问答 >
问题:

连接时从Spring Boot项目到PostgreSQL数据库的连接问题

曾鸿振
2023-03-14

问题

当我启动超过11个Spring Boot项目并行时,我无法从数据库中检索数据。我只得到空白的JSON响应。但是如果我只启动了不到11个项目,那么在那个时候,我就能够得到微服务的结果。当我从12号发球开始的时候有问题。

但这并没有解决我的问题。并且在我的application.property中为hikari连接池添加了其他行,

spring.datasource.hikari.minimumIdle=3
spring.datasource.hikari.maximum-pool-size=3

即使这样也不能解决我的问题。仍然,我只能启动最多12个Spring引导项目一次。

在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.datasource.tomcat.initial-size=15
spring.datasource.tomcat.max-wait=20000
spring.datasource.tomcat.max-active=20
spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=5
spring.datasource.tomcat.default-auto-commit=true
select max_conn,used,res_for_super,max_conn-used-res_for_super res_for_normal 
from 
 (select count(*) used from pg_stat_activity) t1,
 (select setting::int res_for_super from pg_settings where 
  name=$$superuser_reserved_connections$$) t2,
 (select setting::int max_conn from pg_settings where 
 name=$$max_connections$$) t3

活动截图-当我开始只有1个微服务我得到这样的,

活动截图2:

因此,在这里,对于每一个微服务启动,10个数据库连接在后端数据库级别启动。所以如果我正在启动30多个微服务应用程序,它将会去300多个连接。

混乱

  1. 这是因为数据库默认设置吗?
  2. 还是因为连接到DB引擎时的Tomcat问题?

如果这是由于数据库默认设置或配置造成的,我如何覆盖它?

共有1个答案

别永年
2023-03-14

微服务体系结构是将一个应用程序分解为多个易于理解、开发、测试和易出错的独立服务的体系结构。

每个服务都应该在其特定的数据库中有一个选定的实体。

如果您为所有那些独立的服务拥有一个公共数据库,那么您正在违反微服务架构的规则。

更好的方法是为单独的独立服务拥有单独的数据库(仅包含特定于该服务的实体)。

>

  • 以上说明。

    为所有Spring Boot模块/项目维护单独的datasource hikari连接池。

    在Application.Properties中。

    ## datasource for first service/module ##
    datasource1.url=jdbc:postgresql://localhost:3306/service1
    datasource1.username=service1
    datasource1.password=password1
    datasource1.driver-class-name=org.postgresql.Driver
    datasource1.initial-size=15
    datasource1.max-wait=20000
    datasource1.max-active=20
    datasource1.max-idle=20
    datasource1.min-idle=5
    datasource1.default-auto-commit=true
    
    ## datasource for second service/module ##
    datasource2.url=jdbc:postgresql://localhost:3306/service2
    datasource2.username=service2
    datasource2.password=password2
    datasource2.driver-class-name=org.postgresql.Driver
    datasource2.initial-size=15
    datasource2.max-wait=20000
    datasource2.max-active=20
    datasource2.max-idle=20
    datasource2.min-idle=5
    datasource2.default-auto-commit=true
    

    >

  • https://blogs.ashrithgn.com/multiple-data-source-in-spring-boot-using-spring-boot-data-starter/

  •  类似资料:
    • 我有一个IP地址每次我收到连接失败的消息时,我都尝试了很多连接到该服务器的方法。出于安全原因,我隐藏了用户名和密码。 代码: 我有例外 组织。postgresql。util。PSQLException:连接尝试失败。在org。postgresql。果心v3。连接工厂impl。org上的openConnectionImpl(ConnectionFactoryImpl.java:292)。postgr

    • 我正在尝试从Spring Boot应用程序连接到mySQL数据库。然而,当我试图运行它时,它显示出错误。 我如何解决这个问题? 错误 从我的文件中添加代码片段 pom。xml 应用属性 堆栈跟踪 我还没有在sql中手动创建表,因为我认为spring.jpa.hibernate.ddl-Auto=date应该这样做

    • 我很难用pgsql设置laravel 5.3(在wamp/windows上运行)。当我尝试使用“php artisan migrate”迁移表时,出现了一个错误“PDO异常-找不到驱动程序” 我安装了postgres 9.6。 我启用了postgresql的php扩展: 所以我被卡住了,无法在laravel进行迁移工作。我的. env: 以下是laravel错误堆栈: 另外,phpinfo()中的

    • 我已经在网络上学习了一些很好的教程,并且我确实做了,我已经一步一步地提出了它的建议,而且我不需要将我的laravel框架连接到XAMPP。。我不知道发生了什么事。。我已经用相同的数据配置写下了.env和config/database.php(DB_database=styde_curso,DB_USERNAME=root,DB_PASSWORD=)。 . env config/database.p

    • 问题内容: 我已经创建了我的应用程序并在Windows下对其进行了测试,该Windows可以在Access DB文件中进行读写操作。 但是在现实世界中,它将在linux环境中运行,而我现在遇到了一个大问题,似乎没有用于Linux的驱动程序来访问ms acess db,这是我现在进行连接的方式: 有没有人遇到过类似的事情,有人建议我该怎么办? 这是我在linux上得到的例外: 问题答案: 在Linu

    • 使用第一个驱动程序(db2jcc.jar和db2jcc_license_cisuz.jar) 无法使用com.ibm.db2.jcc.db2driver建立到jdbc:db2:/host:446/database的连接([jcc][t4][2057][11264][3.69.24]应用程序服务器拒绝建立连接。试图访问数据库database,该数据库找不到或不支持事务。errorcode=-4499