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
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-connector
和 spring-cloud-cloudfoundry-connector
库。您在覆盖的 bean 下声明的任何配置现在都可以在 application.properties
下配置,就像您在正常的 spring 引导项目中所做的那样。还要确保在清单中添加以下属性:
SPRING_PROFILES_ACTIVE: cloud
JBP_CONFIG_SPRING_AUTO_RECONFIGURATION: '{enabled: false}'
参考此 repository,它提供了如何将其与 Redis 一起使用的示例。
我在 spring 引导下使用 hikari,本地测试我可以看到 50 个活动连接。部署到 cloud foundry 后,我只能看到 10 个活动连接。
spring.datasource.hikari.maximum-池大小=50
似乎 cloud foundry 绑定服务正在尝试覆盖我的应用程序的配置。如何在 cloud foundry 中配置这个数字?
也许有人从这个 link 得到帮助,它说如果你是 运行 生产中的严肃应用程序,你需要配置 DataSourceConfiguration
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,如
implementation 'io.pivotal.cfenv:java-cfenv-boot:2.1.2.RELEASE'
然后您可以删除 spring-cloud-spring-service-connector
和 spring-cloud-cloudfoundry-connector
库。您在覆盖的 bean 下声明的任何配置现在都可以在 application.properties
下配置,就像您在正常的 spring 引导项目中所做的那样。还要确保在清单中添加以下属性:
SPRING_PROFILES_ACTIVE: cloud
JBP_CONFIG_SPRING_AUTO_RECONFIGURATION: '{enabled: false}'
参考此 repository,它提供了如何将其与 Redis 一起使用的示例。