异常:阿里链接池调用方法时时间超时,并且抛出以下错误:
微信图片_20190823153229.png
异常原因,一个方法长时间,多次调用数据库连接,导致链接超时后,session自动关闭。
举个栗子
for(int i = 0;i<Integer.MAX_VALUE;i++){
this.demoDAO.findXXX(i);
}
在一个方法中多次调用导致会话超时,然后连接池超时后关闭了链接。
解决方法
A:修改连接池自动中时间配置
<property name="removeAbandonedTimeout" value="66666"/> <!--自我中断时间秒 -->
B:修改查询方法 举个栗子 将上面的
for(int i = 0;i<Integer.MAX_VALUE;i++){
this.demoDAO.findXXX(i);
}
改成,减少数据库调用次数。
this.demoDAO.findAll(0,Integer.MAX_VALUE);
PS:对于统计数据尽量在SQL层面完成,不要获取所有数据,然后在service进行统计操作,这种做法有以下缺点:
一、维护困难,
二、容易造成精度丢失、
三、速度慢、消耗内存空间大。
这次这个问题就是因为同事在service中多次循环计算求和,所以统计方面尽量在SQL层面解决。