我正在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连接,否则两个实例都不会响应。