Java Basicdatasource连接超时问题(使用mysql)
我正在应用程序中使用BasicDatasource。此应用程序正在处理大量原始数据。有时一次查询可能需要15分钟以上。(使用mysql作为数据库) 这里是我的问题,我从池中获取一个连接,然后对它执行几个查询。但是当我使用同一个连接超过15分钟时,我会得到下面的错误。在mysql服务器中,max_wait设置为180小时,因此保持连接处于活动状态应该没有问题,并且没有防火墙规则设置来杀死超过一定时间的活动连接 你觉得我在这里错过了什么Java Basicdatasource连接超时问题(使用mysql),java,mysql,timeout,connection-pooling,Java,Mysql,Timeout,Connection Pooling,我正在应用程序中使用BasicDatasource。此应用程序正在处理大量原始数据。有时一次查询可能需要15分钟以上。(使用mysql作为数据库) 这里是我的问题,我从池中获取一个连接,然后对它执行几个查询。但是当我使用同一个连接超过15分钟时,我会得到下面的错误。在mysql服务器中,max_wait设置为180小时,因此保持连接处于活动状态应该没有问题,并且没有防火墙规则设置来杀死超过一定时间的活动连接 你觉得我在这里错过了什么 The last packet successfully re
The last packet successfully received from the server was 928,374 milliseconds ago. The last packet sent successfully to the server was 928,374 milliseconds ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1118)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3055)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2941)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3489)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1664)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1583)
at org.apache.commons.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228)
at org.apache.commons.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228)
at com.adsclick.logs.cron.adsclickv261.global.ProcessBase.executeUpdate(ProcessBase.java:766)
您可以尝试的事情:
setMaxWait(-1)
在基本CDATA源上。这告诉它无限期地等待连接wait_timeout
是否设置为默认8小时?autoReconnect=true
settstonbrow(true)
在基本CDATA源代码上。这将防止它发送过时的连接,但会增加应用程序的开销(尽管如果你已经有这么长的单个查询,你可能根本不会注意到这一部分)setMaxWait(-1)
在基本CDATA源上。这告诉它无限期地等待连接wait_timeout
是否设置为默认8小时?autoReconnect=true
settstonbrow(true)
在基本CDATA源代码上。这将防止它发送过时的连接,但会增加应用程序的开销(尽管如果你已经有这么长的单个查询,你可能根本不会注意到这一部分)