起因:有一天同事的项目连接池突然爆了.
起初是以为有长时执行的SQL,但是排查了一下DB,发现根本没有这种sql.
然后在想会不会是调用第三方的接口,超时导致挂起,没有关闭? 调用了一下代码,发现几个第三方的接口也很正常.
眼看着同事的脑袋上头发越来越少,他终于想到了用监控的这种方法, 于是请教了一下公司的大佬.配置了一下,快速方便上手.效果立竿见影,问题也排查到了. 原来是有个BatchInsert的接口造成的.
这种大批量的提交,同事用的是sqlSessionFactory的形式,按批次提交的.问题就出在同事在提交之后,没有把Session给close掉.相当于每次都占用并挂起了一条连接.
代码都上了1年多了,几乎每周业务都会操作那么3,4次.倒也相安无事.因为同事每周都发版本, 每次发版重启服务器的时候,就会把这个连接池重置了.所以一直没发现, 直到前几天业务一次性操作了十几次.连接池就爆掉了...
本文的重点还是怎么配置druid monitor的
我们用的springBoot项目, 公司的框架, (应该大同小异)按配置步骤如下
1.先添加依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
2.在DB的配置类中,添加以下几个配置
public class Dbconfig {
/**
原先的配置
*/
@Bean("dataSource")
@Primary
public DataSource dataSource() {
//配置数据库账号密码连接之类的