spring-boot - springboot spring数据源tomcat属性不起作用
问题描述
我正在使用带有 spring starter 版本的 spring jpa 开发 springboot 应用程序<version>2.2.4.RELEASE</version>
我已经为 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].
解决方案
问题在于部署。我正在将应用程序部署到 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);
}
}
推荐阅读
- sql - 使用动态查询将多个变量插入表中
- node.js - 限制在 express 服务器上运行的异步 BigQuery 作业的数量
- docker - Docker 在哪里运行文件?
- java - 为什么 MyBatis 不识别 Arrays.asList()?
- mysql - 如何在 MySql、Cakephp 3.6 中查找多对多关系中的计数
- api - 使用 Microsoft Graph Api v1 创建在线会议/Skype 活动
- java - JavaFX:在窗格内同时移动数百个 ImageView(性能问题)
- java - Spring security - 错误导致性能问题
- python - 用另一个替换括号中的字符
- python - 拟合到 2D 函数的误差估计