数据库莫名其妙关闭

JFinal版本是4.2,服务器是jfinal-undertow1.6。

这个是数据库连接配置:

DruidPlugin druidPlugin = new DruidPlugin(p.get("jdbcUrl"), p.get("user"), p.get("password").trim());
druidPlugin.setValidationQuery("SELECT 1");
druidPlugin.setTestWhileIdle(true);
druidPlugin.setTestOnBorrow(true);
druidPlugin.setTestOnReturn(true);
me.add(druidPlugin);

ActiveRecordPlugin arp = ActiveRecordPlugin(druidPlugin);
_MappingKit.(arp);
me.add(arp)

服务器访问量并不大,但是数据库会莫名其妙的就关闭了,之前也发生过一次。非常奇怪。

麻烦大大看一下。


微信截图_20190821163052.png

评论区

happyboy

2019-08-21 17:19

大大很忙的,(๑→ܫ←)

JFinal

2019-08-21 20:30

INFO 提示你连接关闭这个才正常,不关闭证明有资源泄漏

此外,提示信息是 INFO,这个是很恰当的输出,你需要将日志级别调整到 warn、error 之类的就不会输出这类信息

happyboy

2019-08-22 10:20

@JFinal 其实这个问题我也反馈过,只不过我用的是第三方mvc框架,单独使用了activerecord,我也遇到数据库只要有一段时间没操作,再操作的时候就会卡一会,很影响体验,似乎是重新连接初始化。但是如果直接使用jfinal,就没有此类问题。

JFinal

2019-08-22 16:08

@happyboy 这个应该是数据源连接池的问题,连接池需要定期对池里的 Conection 对象进行一点操作,和服务端互动一下,否则服务端会在超过一定时间后主动断开连接

当服务端断开连接以后,你再发请求就需要一个建立连接的时间,比较耗时

数据库服务端主动断开连接是一种保护机制,主动回收资源

happyboy

2019-08-22 16:21

@JFinal 连接池用的也是druid,后来写了个调度,定时执行一下select 1才解决。

无处不在的二叔

2019-08-26 08:57

@JFinal 但是提示完这个数据库关闭以后,系统就打不开了。请问有什么原因会造成这种情况呢。