0

I am using hikari with spring boot, local testing I can see 50 active connections. After I deployed to cloud foundry , I am only able to see 10 active connections.

spring.datasource.hikari.maximum-pool-size=50

Seems like cloud foundry bind service is trying to overwrite my application's configuration. How can configure this number in cloud foundry?

maybe someone get help from this link, it says if you are running serious application in production , you need to configure 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

4

3 回答 3

4

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

正如您在连接器文档中找到的那样,您可以编写这样的代码来配置连接属性,包括池大小。

@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 在 CF 上运行应用程序时提供的vcap属性配置 Boot 属性。maximum-pool-size如果您以这种方式配置连接,则应该尊重您的财产。

于 2017-02-16T21:36:14.187 回答
0

是的,云代工厂连接器将覆盖您的属性并对其进行配置,您必须声明一个 bean,如本答案中所述。请注意,对此的配置是有限的,因此 Cloud Foundry 引入了java-cfenv。您可以在 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 Boot 项目中一样进行配置。还要确保在清单中添加以下属性:

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

请参阅此存储库,该存储库提供了如何将其与 redis 一起使用的示例。

于 2020-07-09T12:17:52.277 回答
0

我不得不抬头看看光。根据这篇文章,它是一个 jdbc 连接池。

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

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

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

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

希望这可以帮助!

于 2017-02-08T14:27:55.593 回答