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 ...
随机推荐
- CSS 2D转换
转换是使元素改变形状.尺寸和位置的一种效果.通过 CSS3 转换,我们能够对元素进行移动.缩放.转动.拉长或拉伸,可以大致分为2D转换和3D转换.下面介绍的是2D转换的相关知识点. 首先,CSS中2D ...
- Postman安装及入门实践(以百度搜索为例)
一.Postman安装 可以FQ的小伙伴可以直接去官网下载:https://www.getpostman.com 如果不能,可以用我的安装包,版本找最新的:链接:https://pan.baidu.c ...
- 移动端开发:iOS与Android平台上问题列表
要CSS伪类 :active 生效,只需要给 document 绑定 touchstart 或 touchend 事件 <style> a { color: #000; } a:activ ...
- Django—XSS及CSRF
一.XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往W ...
- How to use Log4cplus
Introduction Log4cplus is derived by the popular Log4j written in java.<br>This tutorial show ...
- Java集合排序
[ 1.对普通的包装类基本数据类型的list数组排序(Integer,Long,Double) ] Collections.sort(List list) [例] List<Long> m ...
- 斐波那契数列(C++ 和 Python 实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 1. 写一个函数,输入 n, 求斐波那契(Fibonacci ...
- Nancy使用Razor视图引擎时,提示对C:\Windows\temp 没有权限访问的问题
Nancy下使用Razor视图需要添加DLL文件引用,通过Nuget安装: 发布网站,在IIS上建立站点后,提示错误:对C:\Windows\temp\XXXX 的访问被拒绝(在VS里F5调试的时候没 ...
- collectd的python插件(redis)
https://blog.dbrgn.ch/2017/3/10/write-a-collectd-python-plugin/ redis_info.conf <LoadPlugin pytho ...
- SSH框架里的iHiberBaseDAO类与iHiberDAOImpl写法
一.iHiberBaseDAO类 package basic; import java.util.*; /** * 基于hibernate技术实现的BaseDAO基类 * @author ZHANGY ...