zoukankan      html  css  js  c++  java
  • 当配置spring jpa数据源的线程池失效后如何手动处理

    使用了spring jpa 作为数据管理插件,主要是因为前人留下,使用方便。

    在使用的时候发现了一个奇怪的问题,只要项目一启动,数据库线程池连接就耗尽。

    不用多想是线程池管理出问题了,工程里使用了多个数据库。

    查找了下质料,spring jpa 使用的是Hikari作为线程池管理的,在默认的情况下是启动10个线程池连接。

    问题就在这里,我这里大概有5个库,并且都分读写,那么启动后就是100个线程池。大概这样,启动了其他服务就容易出现了线程池不足。

    查询了很多的资料,可以通过配置进行修改控制,可是怎么修改yml的配置,就是不生效,不知为何?

    跟了下代码发现配置读取有要求,也懒得新增了。

        public HikariConfig() {
            this.dataSourceProperties = new Properties();
            this.healthCheckProperties = new Properties();
            this.minIdle = -1;
            this.maxPoolSize = -1;
            this.maxLifetime = MAX_LIFETIME;
            this.connectionTimeout = CONNECTION_TIMEOUT;
            this.validationTimeout = VALIDATION_TIMEOUT;
            this.idleTimeout = IDLE_TIMEOUT;
            this.initializationFailTimeout = 1L;
            this.isAutoCommit = true;
         // 通过环境变量来读取配置 String systemProp
    = System.getProperty("hikaricp.configurationFile"); if (systemProp != null) { this.loadProperties(systemProp); } }

    通过配置文件的设置

        public HikariConfig(Properties properties) {
            this();
            PropertyElf.setTargetFromProperties(this, properties);
        }
    
        public HikariConfig(String propertyFileName) {
            this();
            this.loadProperties(propertyFileName);
        }

    无赖之下,只能是代码手动配置了。

    public DataSource dataSourceRead() {
        HikariConfig config = getReadConfig();
        HikariDataSource ds = new HikariDataSource(config);
        return ds;
    }
    public HikariConfig getReadConfig(){
            HikariConfig config = new HikariConfig();
            DbUtils.initDbPool(config);
            config.setPoolName("Hikari read Db");
            return  config;
        }   
    
     public static void initDbPool(HikariConfig config) {
            long timeOut = 60L * 1000L;
            config.setIdleTimeout(timeOut);
            config.setMinimumIdle(0);
            config.setMaximumPoolSize(5);
        }

    代码内容很简单。

  • 相关阅读:
    Jzoj3756 【NOI2014】动物园
    Bzoj5088 HDU 6000 Wash
    Bzoj5088 HDU 6000 Wash
    Jzoj3486 道路改建
    Jzoj3486 道路改建
    合作网络
    工人的请愿书
    划分成回文串
    单向TSP
    旅行
  • 原文地址:https://www.cnblogs.com/annkiny/p/15797546.html
Copyright © 2011-2022 走看看