首页 > 其他分享 >记一次用SpringBoot默认连接池HikariCP拿不到连接问题

记一次用SpringBoot默认连接池HikariCP拿不到连接问题

时间:2023-06-07 10:07:44浏览次数:42  
标签:10 SpringBoot HikariCP hikariDataSource 超时 连接 连接池


记一次用SpringBoot默认连接池HikariCP拿不到连接问题

1、问题发现

最近项目总接到反馈有用户登录不上系统情况,通过查看日志,并验证多次访问都是正常。

2、排查问题

安装pinpoint监控后,通过pinpoint监控发现确实会存在获取连接超时情况,如下图

记一次用SpringBoot默认连接池HikariCP拿不到连接问题_数据库


查看最近访问情况,发现存在大量超时情况,如下图

记一次用SpringBoot默认连接池HikariCP拿不到连接问题_ico_02

3、定位问题

下图是原本HikariCP数据库连接池配置,发现都没有设置数据库连接池参数。

记一次用SpringBoot默认连接池HikariCP拿不到连接问题_数据库_03

4、解决问题

后通过调整连接池参数,跟踪监控,问题得以解决,下图是调整后的连接池配置

记一次用SpringBoot默认连接池HikariCP拿不到连接问题_ico_04


监控应用访问情况,并没有出现失败情况,下图是调整参数后应用访问情况

记一次用SpringBoot默认连接池HikariCP拿不到连接问题_java_05

5、总结

HikariCP连接池默认的一个连接的生命时长,以及连接空闲状态的最大时长过大。可根据实际情况适当调整参数,下面是调整后的数据源配置。

@Bean(name = "unicomDataSource")
    @ConfigurationProperties(prefix="unicom.datasource")
    public DataSource unicomDataSource(@Qualifier("unicomDataSourceProperties") DataSourceProperties properties){
        HikariDataSource hikariDataSource = properties.initializeDataSourceBuilder().type(HikariDataSource.class)
                .build();
        hikariDataSource.setIdleTimeout(60000);//一个连接空闲状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟
        hikariDataSource.setConnectionTimeout(60000);//等待连接池分配连接的最大时长(毫秒),
                                                    // 超过这个时长还没可用的连接则发生SQLException, 缺省:30秒
        hikariDataSource.setValidationTimeout(3000);//用来指定验证连接有效性的超时时间,默认是5秒
        hikariDataSource.setMaxLifetime(60000);//一个连接的生命时长(毫秒),
                                                // 超时而且没被使用则被释放(retired),缺省:30分钟
        hikariDataSource.setMaximumPoolSize(maximumPoolSize);//连接池中允许的最大连接数。缺省值:10
        hikariDataSource.setMinimumIdle(10);//连接池空闲连接的最小数量。缺省值:10
        try {
            hikariDataSource.setLoginTimeout(5);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return hikariDataSource;
    }


标签:10,SpringBoot,HikariCP,hikariDataSource,超时,连接,连接池
From: https://blog.51cto.com/u_15564034/6429962

相关文章

  • 基于JAVA的springboot+vue人事管理系统、员工工资管理系统,附源码+数据库+论文+PPT
    1、项目介绍考虑到实际生活中在人事管理方面的需要以及对该系统认真的分析,将系统权限按管理员和员工这两类涉及用户划分。(a)管理员;管理员使用本系统涉到的功能主要有:首页,个人中心,员工管理,部门管理,员工考勤管理,请假申请管理,加班申请管理,员工工资管理,招聘计划管理,员工培训管理,部......
  • 《springboot冲刺棒》application.yml篇
    $是什么意思application.yml中的jdbc:mysql://${MYSQL-HOST:127.0.0.1}的$是什么意思application.yml中的${MYSQL-HOST:127.0.0.1}实际上是SpringBoot应用程序的属性占位符,具有允许在特定位置引用应用程序中定义的属性的功能。在这种情况下,${MYSQL-HOST:127.0.0.1}引用的......
  • SpringBoot 大型线上商城项目实战总结
    SpringBoot大型线上商城项目实战总结知识点和可以借鉴到自己项目的点:分页逻辑的处理操作​ 这里没有使用封装好的分页处理的相关工具类,而是自己去写分页封装的逻辑代码,帮助我们去了解分页操作的底层逻辑。​ 一个是PageQueryUtil工具类,这个工具类是作为分页查询操作的一个"参......
  • springboot 整合websocket
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>@ConfigurationpublicclassWebsocketConfig{@BeanpublicSe......
  • 【Java】再谈Springboot 策略模式
     第一次使用策略模式是一年前的一个项目:https://www.cnblogs.com/mindzone/p/16046538.html当时还不知道Spring支持集合类型的自动装配在最近一个项目,我发现很多业务需要频繁的使用这种模式去聚合代码 一、牛刀小试这是最开始的定义策略的业务接口/***业务推送管......
  • SpringBoot 文件上传下载工具样例
    最近工作遇到这样的情景:一大堆linux内网服务器,上面部署了mysql,nacos,xxljob等中间件,当然也给了一个很干净的windows内网服务器,什么软件都没有安装。比较欣慰的是:可以通过浏览器访问nacos、xxljob的管理页面。不幸的是:没有安装mysql客户端和xshell等工具。我可以通过......
  • springboot +nginx 配置http2
    说明nginx端使用http2+https,如果不使用https,浏览器会默认走http1.1后台使用http2,不使用https,因为内部服务之间没必要每次校验证书nginx配置#userroot;worker_processesauto;error_logD://nginx-log/error.log;#error_log/dev/null;#pidlogs/ngin......
  • 【Log4j】ログのツールーSpringBoot
    ログのUtilクラス:packagecom.example.demoaop.common;importcom.sun.deploy.config.DefaultConfig;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.util.HashMap;importjava.util.Map;publicclassLogUtils{/***系统默认配置......
  • springboot中使用cache和redis
    知识点:springboot中使用cache和redis (1)springboot中,整合了cache,我们只需要,在入口类上加 @EnableCaching 即可开启缓存 例如:在service层使用@Cacheable和CacheEvict //添加缓存@Cacheable(cacheNames="TestCACHE",key="#root.methodName+'_'+#id")publicMap<String,......
  • 使用powermock写springboot2.7业务类的测试用例
    1,引入powermock依赖<dependency><groupId>org.powermock</groupId><artifactId>powermock-core</artifactId><version>2.0.9</version><scope>test</......