首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java连接不可用,请求在3000ms后超时

Java连接不可用,请求在3000ms后超时
EN

Stack Overflow用户
提问于 2022-03-22 12:59:05
回答 1查看 1.3K关注 0票数 0

这是什么?

代码语言:javascript
复制
o.h.e.jdbc.spi.SqlExceptionHelper:  chatbotPrechatDS - Connection is not available, request timed out after 30000ms.

我在aws弹性豆杆中部署了一个应用程序java 8,我们是两个服务器来承载这个应用程序,和一个RDS mysql。

Hikari版本:

代码语言:javascript
复制
<hikaricp.version>4.0.3</hikaricp.version>

配置:

代码语言:javascript
复制
  connection-timeout: 600000
  maximum-pool-size: 500
  max-lifetime: 1800000
  minimum-idle: 20
  validation-timeout: 3000
  idle-timeout: 60000

这个错误是否与高内存消耗有关?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-22 17:05:41

在我的经验中,“连接不可用”错误是关于连接池耗尽其所有插槽的错误。它与无法连接到数据库服务器无关。数据库服务器可能很乐意接受更多的连接(直到max_connections),但是Java的连接池太小了。

也就是说,您的连接池大小似乎是500,这对于几乎任何应用程序来说都是足够的。连接池的思想是可以在更多的客户端线程之间共享少量的连接。

当客户端线程过长时间保持连接时,就会遇到麻烦。

这可能是一个代码设计问题。使用完连接后,应该将连接释放回连接池,即使线程没有运行其他代码。

另一个可能的问题是线程仍然在执行SQL查询,因为它们的优化效果很差。因此,它不能以足够快的速度使用db连接来处理对应用程序的更高速率的请求,很快池中的所有连接都被占用了。解决这一问题的方法是一个接一个地优化您的查询,首先是那些花费太长时间的查询,或者是运行频率最高的查询。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71572482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档