springMvc数据库连接配置错误情况下,Druid一直初始化,导致线程数爆表
蒋沧浪 2017-12-06 10:40:42 问题是这样的,我的框架是SpringMVC+mybatis,连接池用的是druid,现在数据库连接配置错误,导致druid初始化失败,但是springmvc的初始化并没有停止,后面继续初始化sqlSessionFactory,自然也是失败,还有各种mapper,这里面存在一个依赖链,mapper->sqlsessionfactory->datasource,所以每次初始化mapper,被依赖的datasource和sqlsessionfactory都初始化失败,这两个对象就会被重复初始化,但是依然还是失败,问题在于,datasource初始化失败之后依然会创建2个线程,
createAndStartCreatorThread();
createAndStartDestroyThread();
即每个连接池包含的创建线程和销毁线程。。。(无法传图,见谅)
巨量线程数,线程名字如下:
Druid-ConnectionPool-Create-XXXXX
Druid-ConnectionPool-Destory-XXXXX
我也有想过,毕竟mapper数量有限,可能一直加载,加载完了可能就会出现一个峰值,不会再继续上涨,但是不是这样的,据我观察,还是会无限上涨,最后导致崩溃,linux下问题尤为明显,不仅仅是线程数,伴随之还有内存的消耗。
求助各位大神有没有遇到过,求解答,在线等