大连网站制作公司费用多少,微营销教程,燕郊做网站公司,运维系统问题发现#xff1a;
配置 当项目启动后
线程池确实是初始化了5条连接#xff0c;但是当项目运行一段时间后#xff0c;5条连接确消失了#xff0c;只会程序用到得时候#xff0c;再去初始化连接#xff0c;这样有点违背了参数设置得意义#xff0c;后来通过查阅资料发…问题发现
配置 当项目启动后
线程池确实是初始化了5条连接但是当项目运行一段时间后5条连接确消失了只会程序用到得时候再去初始化连接这样有点违背了参数设置得意义后来通过查阅资料发现
minEvictableIdleTimeMillis最小空闲时间默认30分钟如果连接池中非运行中的连接数大于minIdle并且那部分连接的非运行时间大于minEvictableIdleTimeMillis则连接池会将那部分连接设置成Idle状态并关闭也就是说如果一条连接30分钟都没有使用到并且这种连接的数量超过了minIdle则这些连接就会被关闭了。maxEvictableIdleTimeMillis最大空闲时间默认7小时如果minIdle设置得比较大连接池中的空闲连接数一直没有超过minIdle这时那些空闲连接是不是一直不用关闭当然不是如果连接太久没用数据库也会把它关闭这时如果连接池不把这条连接关闭系统就会拿到一条已经被数据库关闭的连接。为了避免这种情况Druid会判断池中的连接如果非运行时间大于maxEvictableIdleTimeMillis也会强行把它关闭而不用判断空闲连接数是否小于minIdle 总结
minEvictableIdleTimeMillis连接空闲时间大于该值并且池中空闲连接大于minIdle则关闭该连接maxEvictableIdleTimeMillis连接空闲时间大于该值不管minIdle都关闭该连接
问题解决
借助keepAlive参数默认情况下此参数为false。开启keepAlive每隔一段时间进行心跳检查这样就可以初始化空闲时间了。
但是keepAlive是有心跳间隔时间得默认为60s,可以对系统参数设置keepAliveBetweenTimeMillis值指定心跳间隔时间。
注意keepAliveBetweenTimeMillis设置值不能少于minEvictableIdleTimeMillis、maxEvictableIdleTimeMillis否则会失效