开发者社区> 问答> 正文

从连接池中获取到失效连接,在检验连接有效性时出现长时间等待,大概15分钟

生产环境数据库里连接已失效,在从连接池中获取前检查时会出现长时间等待,大概15分钟。现在只能增加keepalive做保活,但是一旦有新的连接释放后再被获取,如果连接已失效还是有15分钟等待出现。

原提问者GitHub用户Fladore

展开
收起
山海行 2023-07-05 19:47:53 87 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    以下是可能导致该问题的一些原因和解决办法:

    未正确设置连接池配置。
    检查连接池配置是否正确设置,例如连接池最大连接数、最小连接数、连接超时时间、空闲连接回收时间等。确保连接池设置的参数符合实际需求,避免连接池过度占用资源或连接池连接不足导致阻塞。

    数据库连接异常。
    检查数据库是否正常运行,例如数据库是否宕机、网络是否稳定、数据库连接是否被占用等。如果数据库连接异常,可以尝试重启数据库或检查数据库连接状态。

    连接超时设置过短。
    如果连接超时设置过短,可能导致连接池中的连接频繁失效,从而增加连接池的压力和等待时间。建议根据实际需求适当调整连接超时时间。

    连接池请求过多。
    如果连接池中的连接请求过多,可能导致连接池资源不足,从而增加连接等待时间。建议检查连接池使用情况,调整连接池设置或优化应用程序的连接使用方式。

    数据库连接操作耗时过长。
    如果数据库连接操作耗时过长,可能导致连接池中的连接长时间等待,从而增加连接等待时间。建议检查数据库连接操作是否存在性能问题,优化 SQL 查询、索引使用等方面。

    2023-07-30 15:15:22
    赞同 展开评论 打赏
  • 这个问题可能是由于连接池中的连接数量太少或者连接的最大寿命太短导致的。为了解决这个问题,可以尝试增加连接池中的连接数量或者延长连接的最大寿命。另外,还可以考虑在连接池中添加一些优化策略,比如根据连接的使用情况动态调整连接池中的连接数量。此外,也可以考虑使用其他连接池管理工具来提高连接池的性能和稳定性。

    2023-07-11 09:52:40
    赞同 展开评论 打赏
  • 检查原因是防火墙会主动切断超过一小时不活跃的数据库连接,已经安排数据库端每10分钟发送小包保活

    原回答者GitHub用户Fladore

    2023-07-06 11:06:37
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

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