2018-11-22 10:03

@Don小浩 我之前也是由于这种问题.后来解决了.原因第一是因为在程序中创建了静态线程变量,druid的回收机制没有处理也不会识别. 第二,检查线程中对数据操作是否开启了autocommit,和数据库不一致,这个操作没操作好代码对线程池配置是致命的.第三,最好多线程测试时,事务控制用tx拦截器,不要自己画蛇添足.

2018-11-14 15:55

@JFinal 波总,我项目是前后端分离的.我现在想 loginAccount 为空的时候,不执行invoke,也不调用 redirect 重定向.而是直接返回一个值给前端,让前端来做怎么处理呢?

2018-11-09 10:37

@JFinal 主要是想问下 jdk版本,tomcat版本那些.这些都配置上了的

2018-11-09 09:29

@JFinal 波总,想问下JDK,TOMCAT这些标准配置是什么? 我实在找不出问题了.想按照标准配置重新搭环境试试.druid使用的默认配置第二天早上还是一大篇的报错.

2018-11-05 11:46

@JFinal druid的版本是 druid-1.0.29.应该不会有问题.其中druidPlugn的设置里面针对mysql 8小时超时的问题的设置是 .
private long timeBetweenEvictionRunsMillis = DruidDataSource.DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS; 默认的参数 DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS 为60000L.即60秒 个人觉得合理.这些问题我都已经一一在服务器上做过测试.但是druidPlugn始终在系统启动3-4天之内会出现我回复波总的那个问题.我也很奇怪为什么其他人没有出现这个问题.

2018-11-04 14:53

@JFinal 波总,DruidPlugin有一个问题,就是不能做到已经死掉的线程自动处理.由于数据库的超时是设置的8小时,所以系统启动超过一段时间,会出现一系列的报错,原因我也知道,但是使用DruidPlugin的默认设置也根本没有解决到问题.个人认为这个不是由于DruidPlugin的问题,而是Druid 这个阿里数据库插件本来就不成熟.所以我才用的c3p0的数据源.就没出现这个报错.但是出现了另外一个报错.就是上图的那个报错.我没有任何getconnction()类似的代码,全是用的底层自带的代码.使用DruidPlugin的具体报错为
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 29,324,843 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3589)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3478)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4019)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2683)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2144)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2310)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:2714)
at com.alibaba.druid.wall.WallFilter.preparedStatement_executeQuery(WallFilter.java:622)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:2711)
at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:465)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:2711)
at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeQuery(PreparedStatementProxyImpl.java:145)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeQuery(DruidPooledPreparedStatement.java:227)
at com.jfinal.plugin.activerecord.DbPro.query(DbPro.java:80)
... 31 more
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3039)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3489)
... 46 more.

2018-11-01 17:46

@JFinal 恩,谢了.波总,这个可以在开发文档里面稍微提一下.如果不是波总提出的这个解决办法,我都还不知道怎么处理.

2018-11-01 15:34

@JFinal 确实是因为这个,我把事务级别调低了之后,就没问题了.谢谢了,波总

2018-10-30 16:46

@JFinal 波总,我用DB.update直接语句更新,出现多条sql同时处于 LOCK_WAIT 状态,时间一长,事务的锁释放了,但是数据却没有更新.也不执行语句然后我把程序关闭,正在卡住的sql就能够马上更新.并发量一大,又会出现这种问题.

2018-10-30 16:37

@红星 而且事务完毕之后,表的数据还没被更新.还在慢慢找原因.

2018-10-30 16:33

@红星 问题不在这儿,关键是并发量一大就锁事务.我现在用DB.update直接语句更新都没用.一大堆sql在那儿卡起.

2018-10-30 10:58

@JFinal 请问下多数据源的时候,怎么生成对应的实体类呢和相关映射呢.我现在配置了两个数据源,启动的时候报错
com.jfinal.plugin.activerecord.ActiveRecordException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'pdbpro.adcongzhi' doesn't exist
.但是这个是我默认数据源的表.我想用_JFinalDemoGenerator 这个类来生成不同数据源的表和映射关系应该怎么做呢.

2018-10-30 09:26

@JFinal 波总,这个问题能从代码上解决吗? 并发更新问题有没有什么代码逻辑能够处理.现在线上环境正在跑,又不敢停.数据库的那张统计表数据完全和真实数据无法吻合.

2018-10-30 09:11

@JFinal 是改数据库设置?改代码没用吗?波总,我看了下mysql数据库引擎没有问题.就是InnoDb.具体参数如下.
Variable_name Value
default_storage_engine InnoDB
default_tmp_storage_engine InnoDB
disabled_storage_engines
internal_tmp_disk_storage_engine InnoDB