DB数据源之SpringBoot+MyBatis踏坑过程(四)没有使用连接池的后果
DB数据源之SpringBoot+MyBatis踏坑过程(四)没有使用连接池的后果
liuyuhang原创,未经允许禁止转载
系列目录连接
DB数据源之SpringBoot+Mybatis踏坑过程实录(一)
1.环境说明
1.1.使用springboot手动获取数据源,其中数据源DataSource使用如下代码获取:
DataSourceBuilder create = DataSourceBuilder.create();
... DataSource source = create.build();
1.2.只使用了这种方式来创建数据源,并且没有配置数据源连接池
1.3.在springboot1.0中没有配置tomcat数据源连接池
1.4.在springboot2.0中没有配置tomcat数据源连接池,也没有配置HikariCP连接池
2.报错表现
2.1.部分报错内容如下:
Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 14,595,596 milliseconds ago. The last packet sent successfully to the server was 14,595,612 milliseconds ago.
2.2.或部分报错内容如下:
o.a.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool.
Data source rejected establishment of connection, message from server: "Too many connections"
2.3.在报错内容中,有关于连接池的类,springboot1.0中会出现tomcat的连接池,springboot2.0中会出现Hikari的连接池这两种错误。
2.4.数据库中现存的连接数量会持续上涨,一直到上涨阈值。查看方法如下:
cmd-->连接mysql数据库-->输入show status like 'Threads%',结果可能如下:

其中Threads_connected的数量就是上文提到的现存的连接数量,如果配置了连接池,在不断对数据库发送请求的时候,
该数量虽然会上涨,但是停下来会有消退,同时上涨速度不会那么快的。
可以持续刷新服务发送请求,然后不断使用此命令查看链接变化,达到某个数字以后,如果报错了,那么查看mysql设置。
该设置应该在mysql根目录中,或者是mysql的data所在目录下,名为my.ini的配置文件,其中有配置最大链接数量,
可进行调整。
3.原因分析
有两种写法实际上中间是有问题的,写法和问题原因如下:
//使用DataSourceBuilder获得数据源额创建者过程中,DataSourceBuilder是有泛型指定的,该泛型没有指定
//create只可以对url,driverClassName,username,password进行设置,并没有相关连接池配置
DataSourceBuilder<?> create = DataSourceBuilder.create();
DataSource source1 = create.build();
//使用DataSourceBuilder获得数据源创建的过程中,使用额是链式编程
DataSource source2 = DataSourceBuilder.create().build(); //DataSource是一个接口,并非实际的类,因此能set的设置项非常少
public interface DataSource extends CommonDataSource, Wrapper
由于上述代码只定义了链接属性,并没有定义连接池,而mysql数据库可以维持的连接数量有限,所以导致本文所指错误。
4.解决方案
对于springboot2.0以下的版本,可考虑额外配置一个tomcat连接池
对于springboot2.0以上的版本,可考虑额外配置一个tomcat连接池之外,还可以配置使用HikariCP连接池
具体手动配置方案,下次在更!
以上
DB数据源之SpringBoot+MyBatis踏坑过程(四)没有使用连接池的后果的更多相关文章
- DB数据源之SpringBoot+Mybatis踏坑过程实录系列(一)
DB数据源之SpringBoot+MyBatis踏坑过程(一) liuyuhang原创,未经允许进制转载 系列目录 DB数据源之SpringBoot+Mybatis踏坑过程实录(一) DB数据源之Sp ...
- DB数据源之SpringBoot+MyBatis踏坑过程(二)手工配置数据源与加载Mapper.xml扫描
DB数据源之SpringBoot+MyBatis踏坑过程(二)手工配置数据源与加载Mapper.xml扫描 liuyuhang原创,未经允许进制转载 吐槽之后应该有所改了,该方式可以作为一种过渡方式 ...
- DB数据源之SpringBoot+MyBatis踏坑过程(三)手工+半自动注解配置数据源与加载Mapper.xml扫描
DB数据源之SpringBoot+MyBatis踏坑过程(三)手工+半自动注解配置数据源与加载Mapper.xml扫描 liuyuhang原创,未经允许禁止转载 系列目录连接 DB数据源之Spr ...
- DB数据源之SpringBoot+MyBatis踏坑过程(五)手动使用Hikari连接池
DB数据源之SpringBoot+MyBatis踏坑过程(五)手动使用Hikari连接池 liuyuhang原创,未经允许禁止转载 系列目录连接 DB数据源之SpringBoot+Mybatis踏坑 ...
- DB数据源之SpringBoot+MyBatis踏坑过程(七)手动使用Tomcat连接池
DB数据源之SpringBoot+MyBatis踏坑过程(七)手动使用Tomcat连接池 liuyuhang原创,未经允许禁止转载 系列目录连接 DB数据源之SpringBoot+Mybatis踏坑 ...
- DB数据源之SpringBoot+MyBatis踏坑过程(六)mysql中查看连接,配置连接数量
DB数据源之SpringBoot+MyBatis踏坑过程(六)mysql中查看连接,配置连接数量 liuyuhang原创,未经允许禁止转载 系列目录连接 DB数据源之SpringBoot+Mybati ...
- Springboot & Mybatis 构建restful 服务四
Springboot & Mybatis 构建restful 服务四 1 前置条件 成功执行完Springboot & Mybatis 构建restful 服务三 2 restful ...
- shardingsphere多数据源(springboot + mybatis+shardingsphere+druid)
org.springframeword.boot:spring-boot-starer-web: 2.0.4release io.shardingsphere:sharding-jdbc-spring ...
- springboot 学习之路 6(集成durid连接池)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
随机推荐
- SVN认证失败的错误分析
作者:朱金灿 来源:http://blog.csdn.net/clever101 时常碰见SVN认证失败的问题,经过一番思考,可以总结出错误根源是:在SVN的数据库目录下有一个svnserve.con ...
- arcgis 地理国情建库软件已完成
arcgis 地理国情软件已完成: 1.创建1:25000(或则其他比例尺)国家2000坐标系接合表 2.按照地理国情普查数据库标准,创建标准数据库 3.外业调查工作底图制作 4.矢量和影像数据批量裁 ...
- 轻松看懂机器学习十大常用算法 (Machine Learning Top 10 Commonly Used Algorithms)
原文出处: 不会停的蜗牛 通过本篇文章可以对ML的常用算法有个常识性的认识,没有代码,没有复杂的理论推导,就是图解一下,知道这些算法是什么,它们是怎么应用的,例子主要是分类问题. 每个算法都看了 ...
- 目前比较全的CSS重设(reset)方法总结(转)
原文地址 在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈 ...
- HighChart利用servlet导出中文PNG图片乱码问题解决
最近用到HighChart作图,在图片导出时,出现了图片中中文乱码的问题,在网络上找了很多资料,但都没有解决,最后才发现了最容易被忽略的问题.具体见下. 由于之前有同事使用过HighChart,所以毫 ...
- Linux下mysql安装过程
到mysql官网下载mysql编译好的二进制安装包,在下载页面Select Platform:选项选择linux-generic,然后把页面拉到底部,64位系统下载Linux - Generic (g ...
- python nose测试
前提: python3 安装nose 结果: nose目录下有子目录tests和mybag,在mybag下新建my_age.py, 内部有Students类,age属性. tests目录下写Sutde ...
- 新开篇关于vue
参考链接:http://cn.vuejs.org/v2/guide/instance.html 了解vue组件的生命周期: 1.beforeCreate 即将创建 2.created 创建 3.bef ...
- sudo:*:command not found
原因:执行sudo后,sudo会根据visudo里面配置的secure_path来找寻命令,所以sudo尽量使用绝对路径 sudo bash-c "echo $PATH"也可以看到 ...
- yii2.0数据库查询修改等方法
yii2.0学习有一段时间了,给大家分享一下一些简单的查询等如何操作. 查询:(这里最前面的Test是引用的模型名) Test::find()->all(); 此方法返回所有数据: Tes ...