Cloud Foundry Bind services/cups 数据源连接数

Cloud Foundry Bind services/cups datasource number of connections

我在 spring 引导下使用 hikari,本地测试我可以看到 50 个活动连接。部署到 cloud foundry 后,我只能看到 10 个活动连接。

spring.datasource.hikari.maximum-池大小=50

似乎 cloud foundry 绑定服务正在尝试覆盖我的应用程序的配置。如何在 cloud foundry 中配置这个数字?

也许有人从这个 link 得到帮助,它说如果你是 运行 生产中的严肃应用程序,你需要配置 DataSourceConfiguration

http://cloud.spring.io/spring-cloud-connectors/spring-cloud-spring-service-connector.html#_relational_database_db2_mysql_oracle_postgresql_sql_server

https://spring.io/blog/2015/04/27/binding-to-data-services-with-spring-boot-in-cloud-foundry

我不得不去看看 Hikari。根据 this article 它是一个 jdbc 连接池。

然后我假设,您将 Hikari 作为一个应用程序部署在 Cloud Foundry 中,并从中创建了一个 CUPS 服务。对吗?

不能通过 CUPS 定义修改服务。它只是为您创建该服务的一个实例。

尝试在 bootstrap.yml 中或通过在 Hikari 应用程序上设置环境变量以传递默认值来设置池大小。您可能需要调整应用程序以在运行时接受这些变量。

如果这不起作用,您可能必须创建自己的服务代理或生成磁贴。这将为您提供操纵服务的选项。

希望对您有所帮助!

如果您在项目中包含 spring-boot-starter-cloud-connectors,则不会使用 Spring 引导数据库属性。 Spring Cloud Connector 将自动创建和配置 Datasource bean,除非您编写 Java 代码来手动配置它。

如您在 Connectors docs 中所见,您可以编写这样的代码来配置连接属性,包括池大小。

@Bean
public DataSource dataSource() {
    PoolConfig poolConfig = new PoolConfig(5, 30, 3000);
    DataSourceConfig dbConfig = new DataSourceConfig(poolConfig, null);
    return connectionFactory().dataSource("database-service-name", dbConfig);
}

如果您想使用 Boot 属性而不是像这样编写代码,您可以从项目中删除 spring-boot-starter-cloud-connectors 并使用 Boot 在应用 [=] 时提供的 vcap properties 配置 Boot 属性28=] 在 CF 上。如果您以这种方式配置连接,您的 maximum-pool-size 属性 应该得到尊重。

是的,cloud foundry 连接器会覆盖您的属性,要对其进行配置,您必须声明一个 bean,如 . Note that the configuration for this was limited and therefore cloud foundry introduced 中所述。您可以按如下方式将此库添加到您的 build.gradle 中:

implementation 'io.pivotal.cfenv:java-cfenv-boot:2.1.2.RELEASE'

然后您可以删除 spring-cloud-spring-service-connectorspring-cloud-cloudfoundry-connector 库。您在覆盖的 bean 下声明的任何配置现在都可以在 application.properties 下配置,就像您在正常的 spring 引导项目中所做的那样。还要确保在清单中添加以下属性:

SPRING_PROFILES_ACTIVE: cloud
JBP_CONFIG_SPRING_AUTO_RECONFIGURATION: '{enabled: false}'

参考此 repository,它提供了如何将其与 Redis 一起使用的示例。