这是什么?
o.h.e.jdbc.spi.SqlExceptionHelper: chatbotPrechatDS - Connection is not available, request timed out after 30000ms.我在aws弹性豆杆中部署了一个应用程序java 8,我们是两个服务器来承载这个应用程序,和一个RDS mysql。
Hikari版本:
<hikaricp.version>4.0.3</hikaricp.version>配置:
connection-timeout: 600000
maximum-pool-size: 500
max-lifetime: 1800000
minimum-idle: 20
validation-timeout: 3000
idle-timeout: 60000这个错误是否与高内存消耗有关?
发布于 2022-03-22 17:05:41
在我的经验中,“连接不可用”错误是关于连接池耗尽其所有插槽的错误。它与无法连接到数据库服务器无关。数据库服务器可能很乐意接受更多的连接(直到max_connections),但是Java的连接池太小了。
也就是说,您的连接池大小似乎是500,这对于几乎任何应用程序来说都是足够的。连接池的思想是可以在更多的客户端线程之间共享少量的连接。
当客户端线程过长时间保持连接时,就会遇到麻烦。
这可能是一个代码设计问题。使用完连接后,应该将连接释放回连接池,即使线程没有运行其他代码。
另一个可能的问题是线程仍然在执行SQL查询,因为它们的优化效果很差。因此,它不能以足够快的速度使用db连接来处理对应用程序的更高速率的请求,很快池中的所有连接都被占用了。解决这一问题的方法是一个接一个地优化您的查询,首先是那些花费太长时间的查询,或者是运行频率最高的查询。
https://stackoverflow.com/questions/71572482
复制相似问题