您对华为云开发者网站的整体评价?

非常不满意 非常满意

0

1

2

3

4

5

6

7

8

9

10

*您遇到了哪些问题?(最多选三项)
*您感到满意的原因是?(最多选三项)
*请针对您所遇到的问题给出具体的反馈
0/200
建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
温馨提示

确定
温馨提示

确定
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
温馨提示

登录超时或用户已下线,请重新登录!!!

确定
取消
提示

您发布的内容检测到敏感词

如点击继续发布,敏感词将以“*”代替

返回修改
继续发布

作者小头像 Lv.2
123 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
0
3
0
120
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

他的回复:
您好,这个问题是跟Druid连接池有关联。报错信息的源码出处是JDBC里, class QueryExecutorImpl extends QueryExecutorBase下的processResults函数,属于通信协议处理的核心状态机。原因:    因为这条连接空闲时间超过阀值,导致断连了,但是druid连接池那边的感知可能存在问题,认为驱动和druid有配合修改的点。        临时规避措施是增加druid的保活时间,或者延长session_timeout的超时时间。           即增加连接的存活时间,减少断开连接频次。                druid会在后台启动一个线程,每间隔 timeBetweenEvictionRunsMillis 设置的时间对连接池内会话进行判断,如果空闲时间大于    minEvictableIdleTimeMillis会进行关闭。但是每次只会检查现有连接数据--MinIdle数量的session。这样就导致有MinIdle个session没有进行检查,    增加driud的设置keepAlive.dataSource.setKeepAlive(true);但是每次只会检查现有连接数据--MinIdle个session。    增加此配置会对剩余连接执行validationQuery设置的SQL进行检查。可能日志还是会有Buffer is empty但是不影响应用使用了。    例如:    public DataSource druid() {        DruidDataSource druidDataSource = new DruidDataSource();        druidDataSource.setDriverClassName(dsDriverClassName);        druidDataSource.setUrl(dsUrl);        druidDataSource.setUsername(dbUser);        druidDataSource.setPassword(DigestUtils.decryptIfIsEncrypted(dbPassword));        druidDataSource.setDefaultTransactionIsolation(2);        druidDataSource.setRemoveAbandonedOnBorrow(true);        druidDataSource.setRemoveAbandonedOnMaintenance(true);        druidDataSource.setRemoveAbandonedTimeout(300);        druidDataSource.setLogAbandoned(true);        druidDataSource.setMaxActive(200);        druidDataSource.setTestWhileIdle(true);        druidDataSource.setTestOnBorrow(true);        druidDataSource.setTestOnReturn(true);        druidDataSource.setMinIdle(2);        druidDataSource.setMaxWait(30000);        druidDataSource.setMaxEvictableIdleTimeMillis(3600000);        druidDataSource.setMinEvictableIdleTimeMillis(600000);        druidDataSource.setValidationQueryTimeout(30000);        druidDataSource.setKeepAlive(true);        druidDataSource.setMaxWaitMillis(dsMaxWaitMillis);        return druidDataSource;    }        parameters: ?currentSchema ...... &socketTimeout=10000&connectTimeout=30000    Druid开启了keepalive, socketTimeout=30, connectTimeout=30, testOnReturn关闭后,该问题即可解决。       该问题会衍生另一个网络抖动时,获取数据库连接等待15分钟后报错。           https://github.com/alibaba/druid/issues/1260