【问题标题】:springboot spring datasource tomcat properties not workingspringboot spring数据源tomcat属性不起作用
【发布时间】:2021-10-03 11:16:55
【问题描述】:

我正在使用 spring jpa 和 spring starter 版本 <version>2.2.4.RELEASE</version> 开发一个 springboot 应用程序

我已经为 tomcat 定义了以下属性,并且还排除了 HikariCP 注意:HikariCP 也不起作用

application.properties

spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
spring.datasource.tomcat.initial-size=30
spring.datasource.tomcat.max-wait=60000
spring.datasource.tomcat.max-active=300
spring.datasource.tomcat.min-idle=30
spring.datasource.tomcat.default-auto-commit=true 

我已经尝试了所有组合并且也使用了默认值,但在 2-3 次 API 调用后我遇到了错误。

o.h.engine.jdbc.spi.SqlExceptionHelper   : [http-nio-8080-exec-5] Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available[size:4; busy:
4; idle:0; lastwait:30000].

【问题讨论】:

  • 不幸的是,仅靠属性不足以诊断问题。您确定正在使用自动配置的DataSource 吗?如果您的应用程序定义了自己的DataSource bean,则这些属性将不起作用。 minimal, reproducible example 在这里很有用。

标签: spring-boot tomcat spring-data-jpa spring-jdbc


【解决方案1】:

问题在于部署。我正在将应用程序部署到 cloudfoundry,默认情况下它会添加名为 cloud 的配置文件。因此,我为“云”配置文件创建了一个 DataSource bean,如下所示:

@Configuration
@Profile("cloud")
public class CloudConfig extends AbstractCloudConfig {

    @Bean
    public DataSource dataSource() {
        PooledServiceConnectorConfig.PoolConfig poolConfig = new PooledServiceConnectorConfig.PoolConfig(20, 300, 30000);
        DataSourceConfig dbConfig = new DataSourceConfig(poolConfig, null);
        return connectionFactory().dataSource(dbConfig);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 2018-01-19
    • 2023-01-21
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    相关资源
    最近更新 更多