使用atomikos作分布式事务,连接池超时问题
mysql会自动断开超过60秒的连接,而atomikos连接池没有检测机制去保持空闲的连接
造成连接池的连接超时掉了,以下是日志内容
com.mysql.jdbc.jdbc2.optional.MysqlXAException: Communications link failure
The last packet successfully received from the server was 157,969 milliseconds ago. The last packet sent successfully to the server was 3 milliseconds ago.
at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.mapXAExceptionFromSQLException(MysqlXAConnection.java:604)
at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.dispatchCommand(MysqlXAConnection.java:583)
at com.mysql.jdbc.jdbc2.optional.MysqlXAConnection.start(MysqlXAConnection.java:523)
at com.atomikos.datasource.xa.XAResourceTransaction.resume(XAResourceTransaction.java:498)
at com.atomikos.datasource.xa.session.BranchEnlistedStateHandler.<init>(BranchEnlistedStateHandler.java:59)
at com.atomikos.datasource.xa.session.NotInBranchStateHandler.checkEnlistBeforeUse(NotInBranchStateHandler.java:65)
at com.atomikos.datasource.xa.session.TransactionContext.checkEnlistBeforeUse(TransactionContext.java:88)
at com.atomikos.datasource.xa.session.SessionHandleState.notifyBeforeUse(SessionHandleState.java:179)
at com.atomikos.jdbc.AtomikosConnectionProxy.enlist(AtomikosConnectionProxy.java:208)
at com.atomikos.jdbc.AtomikosConnectionProxy.invoke(AtomikosConnectionProxy.java:142)
google下看到几个说修改mysql连接超时设置,我觉得mysql连接超时配置是不建议修改的,有没有更好的方式解决呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
引用来自“走在岸上的鱼”的评论
请问博主解决了吗
请问博主解决了吗
可以配置maxLifeTime
连接最大存活时间,超过这个且没有正在使用的连接将自动销毁,0无限制,1000 =1000s,对于一些会自动中断连接的数据库如mysql,可以设置这个参数,在达到这个时间的时候会自动关闭连接,下次数据库调用的时候就会新建