开发者社区> 问答> 正文

生产环境运行一段时间后连接池发生错误 get connection timeout retry :

1.2.6版本 生产环境运行一段时间后连接池发生错误 get connection timeout retry : 1 接着创建连接发生 IO Error: Connection reset 最后 failContinuous is true

2021-06-08 11:21:28.710 ERROR 57448 --- [ task23] c.alibaba.druid.filter.stat.StatFilter : slow sql 25902 millis. select a from table 2021-06-08 11:21:21.927 ERROR 57448 --- [ task10] c.alibaba.druid.filter.stat.StatFilter : slow sql 22402 millis. select a from table 2021-06-08 11:23:55.604 ERROR 57448 --- [ task10] c.alibaba.druid.filter.stat.StatFilter : slow sql 8216 millis. select a from table 2021-06-08 11:23:55.612 ERROR 57448 --- [io-8081-exec-61] c.alibaba.druid.filter.stat.StatFilter : slow sql 8181 millis. select a from table 2021-06-08 11:23:55.615 WARN 57448 --- [io-8081-exec-43] com.alibaba.druid.pool.DruidDataSource : get connection timeout retry : 1 2021-06-08 11:23:55.617 WARN 57448 --- [io-8081-exec-37] com.alibaba.druid.pool.DruidDataSource : get connection timeout retry : 1 2021-06-08 11:23:55.617 WARN 57448 --- [io-8081-exec-59] com.alibaba.druid.pool.DruidDataSource : get connection timeout retry : 1 2021-06-08 11:23:55.623 WARN 57448 --- [io-8081-exec-42] com.alibaba.druid.pool.DruidDataSource : get connection timeout retry : 1 2021-06-08 11:23:55.618 WARN 57448 --- [io-8081-exec-58] com.alibaba.druid.pool.DruidDataSource : get connection timeout retry : 1 2021-06-08 11:23:55.623 WARN 57448 --- [io-8081-exec-35] com.alibaba.druid.pool.DruidDataSource : get connection timeout retry : 1 2021-06-08 11:23:55.636 WARN 57448 --- [io-8081-exec-50] com.alibaba.druid.pool.DruidDataSource : get connection timeout retry : 1 2021-06-08 11:23:55.636 WARN 57448 --- [io-8081-exec-48] com.alibaba.druid.pool.DruidDataSource : get connection timeout retry : 1 2021-06-08 11:23:55.636 WARN 57448 --- [io-8081-exec-49] com.alibaba.druid.pool.DruidDataSource : get connection timeout retry : 1 2021-06-08 11:23:55.637 WARN 57448 --- [io-8081-exec-40] com.alibaba.druid.pool.DruidDataSource : get connection timeout retry : 1 2021-06-08 11:24:03.983 ERROR 57448 --- [io-8081-exec-35] c.alibaba.druid.filter.stat.StatFilter : slow sql 8327 millis. select a from table 2021-06-08 11:24:04.006 ERROR 57448 --- [eate-1384646526] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:oracle:thin:@x.x.x.x:1521:orcl, errorCode 17002, state 08006

java.sql.SQLRecoverableException: IO Error: Connection reset at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:533) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] at oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:557) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:233) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:29) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:556) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:156) ~[druid-1.2.6.jar:1.2.6] at com.alibaba.druid.filter.stat.StatFilter.connection_connect(StatFilter.java:227) ~[druid-1.2.6.jar:1.2.6] at com.alibaba.druid.filter.FilterChainImpl.connection_connect(FilterChainImpl.java:150) ~[druid-1.2.6.jar:1.2.6] at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1659) ~[druid-1.2.6.jar:1.2.6] at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1723) ~[druid-1.2.6.jar:1.2.6] at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2801) ~[druid-1.2.6.jar:1.2.6] Caused by: java.net.SocketException: Connection reset at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113) ~[na:1.8.0_65] at java.net.SocketOutputStream.write(SocketOutputStream.java:153) ~[na:1.8.0_65] at oracle.net.ns.DataPacket.send(DataPacket.java:248) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] at oracle.net.ns.NetOutputStream.flush(NetOutputStream.java:227) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] at oracle.net.ano.AnoComm.b(Unknown Source) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] at oracle.net.ano.Ano.negotiation(Unknown Source) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] at oracle.net.ns.NSProtocol.connect(NSProtocol.java:510) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1625) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:365) ~[ojdbc6-11.2.0.3.jar:11.2.0.3.0] ... 10 common frames omitted

java.sql.SQLTimeoutException: ORA-01013: user requested cancel of current operation at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:457) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:400)

2021-06-08 11:25:16.825 INFO 57448 --- [eate-1384646526] c.a.druid.pool.DruidAbstractDataSource : {dataSource-1} failContinuous is true

java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3332) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137) at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:514)

这个什么原因造成的呢?

查询都8-22s了,网络或者数据库状态不太对? c.alibaba.druid.filter.stat.StatFilter : slow sql 22402 millis. select a from table

原提问者GitHub用户antporter

展开
收起
山海行 2023-07-05 18:04:58 1842 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    根据您提供的信息,可能存在以下几种问题:

    连接池繁忙或连接池资源不足。报错信息中出现了 get connection timeout retry : 1 的提示,这可能是由于连接池中的连接资源不足或者连接池繁忙导致的。建议检查连接池的配置和连接池中连接的使用情况,确保连接池资源的充足和合理使用。

    网络连接问题。报错信息中出现了 IO Error: Connection reset 的提示,这可能是由于网络连接中断或服务器异常导致的。建议检查网络连接的稳定性和服务器的运行状态,并进行相应的调试和优化。

    SQL 执行效率问题。报错信息中出现了 slow sql 的提示,这可能是由于 SQL 语句执行效率低下导致的。建议检查 SQL 语句的正确性和优化,并进行相应的调试和优化。

    2023-07-30 20:45:28
    赞同 展开评论 打赏
  • 这个时间点并发确实很大,但是集群的其他节点没有报错,不确定是数据库导致的还是网络导致的。这个节点最后进程还在,就是最后堆溢出了,导致整个应用挂掉。

    已定位到原因。并发获取连接的个数超过”最大并发连接数“导致。但此时连接数远远未到达最大连接数。 select count(*) from v$session where status='ACTIVE' --最大并发连接数

    原回答者GitHub用户antporter

    2023-07-06 10:42:41
    赞同 展开评论 打赏
  • 这段日志中给出了一些错误和警告信息,可以通过这些信息来推断问题的可能原因:

    1. get connection timeout retry: 1:连接池无法获取连接,且重试次数为1。
    2. IO Error: Connection reset:连接被重置,发生了输入/输出错误。
    3. failContinuous is true:连接创建失败连续发生多次。

    根据日志中的信息以及查询执行时间长的警告 c.alibaba.druid.filter.stat.StatFilter: slow sql 22402 millis. select a from table,有以下可能的原因:

    1. 网络问题:由于连接超时和连接重置的错误,可能存在网络不稳定或者被重置的问题。这可能是由于网络延迟、防火墙设置、负载均衡等原因引起的。
    2. 数据库问题:连接超时和连接重置的错误也可能是数据库方面的问题。检查数据库服务器的状态、资源使用情况以及是否存在并发连接过多的情况。
    3. 内存问题:最后出现的 java.lang.OutOfMemoryError: Java heap space 错误指示堆空间不足,导致内存溢出。这可能是由于程序运行期间产生大量对象占用了过多的内存空间。

    综上所述,可能的原因包括网络问题、数据库问题和内存问题。要解决此问题,可以采取以下措施:

    1. 检查网络连接和数据库服务器的状态,确保网络稳定,并且数据库能够正常处理请求。
    2. 调整连接池配置,增加连接超时时间,以减少连接超时错误。可以尝试增加连接池的最大连接数,以避免并发连接过多导致的问题。
    3. 检查应用程序代码,确认是否存在内存泄漏或者不良的内存使用模式。可以通过分析堆转储文件(Heap Dump)来确定是否有内存泄漏,并进行相应的优化。
    4. 更新数据库驱动程序版本,以确保使用最新的驱动程序版本。

    如果问题仍然存在,可能需要进一步分析日志和系统状态来确定准确的原因和解决方案。

    2023-07-05 19:05:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载