mybatis+Druid连接池的问题

首先让我来描述问题

我有个系统是基于springmvc+mybatis+mysql+druid的,启动系统刚开始用没有问题,但是用着用着系统表象就是卡死

分析:

1:通过表象是不是有可能数据库锁表了,通过jvm的jstack -l pid(进程id)

  如何得到进程id呢?--到jdk安装的bin目录执行 jps命令得到pid

打印出堆栈信息

此时没办法只能看druid的源码找到

此时要引起注意,看源码的时候一点要注意if条件的地方,此时我考虑是不是maxWait没有配置默认为0,此时我到自己的配置文件中配置

然后再次尝试,系统依然还是挂了,在此运行jstack堆栈信息再没有出现上面的错误,到此问题没有得到解决,告一段落

此时我发现用Druid它提供一个图形化界面

在没有解决问题之前这两个值一直不相等,打开连接数和关闭数随着请求的增多在增大,增到到连接池最大数直接挂了,问题终于算找到了,如何解决呢

1:是不是配置文件有问题,到处找资料,尝试,问题没有得到解决

2:尝试不同的url请求,其中有些url是不会扩大打开和关闭连接数之差,有些会扩大(此时问题又在缩小范围)

3:仔细看那些扩大范围的请求,发现,这些请求都是需要分页的请求,那些不会扩大的都是不涉及到分页的请求(问题又在缩小范围)

4:mybatis分页我是写了个拦截器通过Jdbc分页,此时仔细看代码发现代码里面,当打开数据库连接的时候有个连接对象忘记关闭了,就是如下的红色代码

加上去之后,再次处理问题,问题得到解决,不管怎么请求现在打开数和关闭数数据永远相等,系统正常,问题得到解决,OH Good!!!!!!

其实之间想如果这条路走不通,我想是不是可能druid版本问题,如果此条路行不通,打算换用其他连接池试试,还有会不时是spring配置有问题等等猜测,只有对问题永不放弃,什么问题都能得到解决..................

时间: 2024-08-25 02:12:17

mybatis+Druid连接池的问题的相关文章

springboot-26-整合mybatis,druid连接池

sprinboot整合mybatis, 有2种方式, 第一种完全使用注解的方式, 还有一种就是使用xml文件的方式 项目使用gradle + idea, 数据源使用druid, 多使用groovy编写 环境配置 1, 依赖 dependencies { compile("org.springframework.boot:spring-boot-devtools") compile("org.springframework.boot:spring-boot-starter&qu

SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置

一直对springmvc和mybatis挺怀念的,最近想自己再搭建下框架,然后写点什么. 暂时没有整合缓存,druid也没有做ip地址的过滤.Spring的AOP简单配置了下,也还没具体弄,不知道能不能用,log也不知道能不能用,`(*∩_∩*)′哈哈,有点不负责任...... 直接上代码: 使用的eclipse和eclipse自带的maven,参考了网上的资料,有些代码是拷贝的,不过都自己测试过了.嗯,可以跑起来... 先上项目结构: 新建maven项目,选择web,然后配置pom: <pro

Druid连接池-阿里巴巴开源JDBC组件

Druid在连接池领域里可以说是比较火的,是阿里巴巴开源的JDBC连接池.监控组件,下面就简单介绍它一下. 它包括三部分:  DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系. DruidDataSource 高效可管理的数据库连接池. SQLParser . 功能:     .  可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助.     .  替换D

springboot+mybatis+druid数据库连接池

参考博客https://blog.csdn.net/liuxiao723846/article/details/80456025 1.先在pom.xml中引入druid依赖包 <!-- 连接池 --> <!-- Druid 数据连接池依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>

使用druid连接池的超时回收机制排查连接泄露问题

在工程中使用了druid连接池,运行一段时间后系统出现异常: Caused by: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60009, active 50 at org.springfr

spring 4 + jpa(hibernate 3/4) + spring mvc 多数据源配置(二)+Druid连接池

接上一个博文(http://www.loveweir.com/html/18.html),没有数据库连接池,纯粹用jpa的官方链接. 所以这次要加上连接池本文用Druid连接池来实现多数据源的配置. persistence.xml 这个文件可以省略了,全部配置在applicationContext.xml 里面: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www

Druid连接池及监控在spring中的配置

Druid连接池及监控在Spring配置如下: [html] view plaincopy <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本属性 url.user.password --> <property 

druid连接池

近期一直报连接池连接的错误,主要就是那个什么last packet 多少ms以前. 所以就研究了下. druid连接池和mysql的连接关系可以简单理解为下面的案例. 有10个接线员A和远程10个接口员B在通讯,如果不用连接池,那么每用一次就要拨号.建立链接.通话.挂断,非常浪费时间.所以如果10个接线员A提前就和B接通,然后一直不挂断,这样需要时只要喊话一下就行了,效率高,真正的基于TCP连接可以参考下载 但是这样会导致一个问题,如果B偷懒,偷偷的将电话挂断,而A不知道,再讲话就会出错了. 针

使用druid连接池,配置sql防火墙发现的sql注入问题

最近在使用druid连接池,同时也配置了web和spring的关联监控,检测到select * from tables param like #{param1} "%"的语句被拦截了.做个笔记. 解决方法有两种: 一. select * from tables param like concat(${param1},"%"). 二.传入 参数的时候动态拼接 param1=param1+"%"; select * from tables param