Springboot连接池的配置和遇到的问题

Springboot连接池的配置

前言:最近发现项目日志中经常会出现有关数据源的一些警告信息,说实话看着这种日志就很闹心,而且对于数据源这么重要的东西还是有必要去着重解决,学习的。
在这里插入图片描述
可以看出,有两个关于数据源的异常信息:

1.在连接关闭之后不允许被再操作。

2.抛出异常说连接是不可用的,请求时间超过了30000ms;

其实看到这个情况就知道肯定跟数据源连接池的配置信息有关,

name描述默认值
autoCommit自动提交从池中返回的连接true
connectionTimeout等待来自池的连接的最大毫秒数30000ms
idleTimeout连接允许在池中闲置的最长时间600000ms
readOnly从池中获取的连接是否默认处于只读模式false
maximumPoolSize池中最大连接数,包括闲置和使用中的连接10
minimumIdle池中维护的最小空闲连接数10
maxLifetime池中连接的最长生命周期1800000

其实常用的就这些吧,可以根据日志输出的问题来看看需要配置那些值;

问题1:应该就是在我们使用完连接后,连接已经失效了但是没有被回收,因为MySQL针对长时间的DB连接在无任何操作情况下过了8个小时后会自动把这个连接关闭(mysql默认的wait_timeout为8小时),在连接池中的connection如果空闲超过8小时,mysql会将其断开,但是连接池并不知道connection已经失效,如果这时有client请求connection,连接池将失效的connection给client,就会造成该异常。

解决:配置相应的连接池参数(最主要的应该是参数idleTimeout,maxLifetime),定时去检查连接的有效性,定时清理无效的连接。

并且我在有些文章上看到这样段话 ‘to set maxLifeTime value few minute less than mysql’s wait_timeout(show variables like “%timeout%”) to avoid broken connection exception.’ 将maxLifetime值设置为比MySQL的wait_time小一些。查看mysql数据库的wait_time命令 show variables like “%timeout%”

问题2:请求数据库连接时,长时间未获取到而报错。

解决:通过配置connectionTimeout值来控制等待获取连接的时间

为了让自己更明白一点,翻了下以前做的笔记:

在这里插入图片描述

这个可以直接在网上查看一些连接池的基本工作原理,至于连接池的创建和实现方式,使用连接池的好处,常见的连接池 等都有的,就不介绍了。下来可以看一下这两篇文章:https://www.cnblogs.com/devin-ou/p/7989701.html
https://blog.csdn.net/u010028461/article/details/78932109

关于上面遇到的问题和连接池全部的配置,也推荐看:https://blog.csdn.net/wantLight/article/details/107163468 https://blog.csdn.net/mezheng/article/details/111993947

总结:

对于连接池的工作原理和好处这些都没有写,但是还是要花时间再去看看,估计这样才能真的明白如何去配置我们的连接池。贴出来的链接其实上班的路上看看最适合不过了,还有最近不知道为什么总是没心思去写博客,其实真的静下心来开始写了,又感觉挺不错的。加油!!!

下一篇文章:常见的加密解密算法使用

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Spring Boot与MyBatis-Plus连接SQL Server时,可能会遇到以下问题: 1. 驱动问题:首先需要引入SQL Server的JDBC驱动,可以在pom.xml文件中添加依赖。常用的驱动有`com.microsoft.sqlserver.jdbc.SQLServerDriver`和`net.sourceforge.jtds.jdbc.Driver`。确保驱动版本与SQL Server版本兼容。 2. 数据库连接配置:在application.properties或application.yml文件中,需配置SQL Server的连接信息,包括数据库地址、端口、用户名、密码等。注意要正确配置驱动名称、连接URL以及字符集等。 3. 数据库版本兼容性:确保使用的SQL Server版本与MyBatis-Plus和JDBC驱动兼容。不同版本的SQL Server可能在SQL语法、特性或驱动接口上有所区别。 4. 数据库表映射:在使用MyBatis-Plus进行ORM映射时,需要在实体类中使用注解配置数据表名、字段名和主键等信息。同时,要确认实体类和数据表的字段类型、长度、精度等匹配。 5. 数据库连接池配置:可以使用Spring Boot提供的连接池技术,如HikariCP或Tomcat连接池。根据并发需求和性能要求,配置合适的连接池大小、最大等待时间和最大空闲时间等参数。 6. 异常处理与日志记录:在连接SQL Server过程中,可能会出现连接异常、语法错误等问题。需要适当处理这些异常,并进行日志记录以便排查和分析问题。 通过解决上述问题,我们可以成功连接SQL Server数据库,并使用MyBatis-Plus进行数据操作和ORM映射。持续的测试和调试可以保证系统的稳定性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值