mysql - 意外的 MySql PoolExhaustedException
问题描述
我在 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 连接,否则两个实例都没有响应。
解决方案
推荐阅读
- sql - System.InvalidOperationException:“执行命令时,参数必须是专有的数据库参数或值。”
- php - 如何在php中将变量名增加1
- python - 将图像路径从数据库传递到 jinja 模板
- flutter - 传递 scrollController 时 CustomScrollView 滚动行为发生变化
- azure-active-directory - 为什么 Microsoft Graph 筛选器在图形资源管理器中有效,但在 API 中无效
- css - 外部 CSS 文件不会影响按钮样式
- qt - 在 QTreeWidget 中设置编辑器宽度以填充单元格
- javascript - array [4,2,7,1] 创建一个返回 Promise 的函数。Promise 将计算一个数组的总和并在 3 秒后打印出来
- typescript - Typescript/ESLint 错误:无法解析模块“aws-lambda”导入/未解析的路径
- latex - 用箭头连接两张 tikz 图片