意外的MySql PoolExhaustedException

时间:2018-08-08 07:44:52

标签: mysql amazon-ec2 spring-data-jpa database-connection amazon-rds

我正在AWS上运行两个EC2实例,分别为我的应用程序提供服务。默认情况下,每个应用程序最多可以打开100个与MySql的连接。对于数据库,我使用RDS和t2.medium实例,它们可以一次处理312个连接。

通常,我的连接大小不会超过20。当我开始向用户发送通知以进入应用程序时,连接大小会增加很多(这是预期的)。在某些情况下,MySql连接意外增加,我的应用程序开始抛出 PoolExhaustedException

PoolExhaustedException: [pool-7-thread-92] Timeout: Pool empty. Unable to fetch a connection in 30 seconds, none available[size:100; busy:100; idle:0; lastwait:30000].

当我检查来自Navicat的数据库连接时,我看到大约有200个连接,并且所有这些都在休眠。我不明白为什么不使用开放式连接。我使用标准的Spring Data Jpa保存和读取我的实体,这意味着我不会手动打开或关闭连接。

除非我关闭一个实例并释放mysql连接,否则两个实例都不会响应。

您可以看到mysql连接大小更改图形here和一条日志here

0 个答案:

没有答案