Play!App:数据库连接成倍增加/ AWS RDS当前数据库连接的准确度如何?

时间:2016-01-04 12:05:56

标签: mysql database amazon-web-services playframework

我启动了一个AWS RDS MySQL实例,目前只能通过Play!-Framework应用程序的2个相同实例访问。此应用程序运行了一些akka脚本,它们访问数据库(例如,检查旧/未引用的条目)。此外,DB当前仍然保持具有BLOB数据字段的表,其将部分地填充有最终用户数据。因此,我尝试对应用程序所需的实例大小进行基准测试,尤其是估计涉及小查询(登录)的用户操作,以及大型查询(上载/下载BLOB)。

但是,在设置实例后,AWS提供的连接计数指标显示出奇怪的行为:

DB Connections on AWS RDS instance

显然,akka脚本每隔约15分钟运行一次,数据库连接最多可达27个。大多数情况下,连接数再次降至4,持续几分钟,然后再次上升到27。我对一些问题感到疑惑:

  1. 来自.NET,我总是与使用US的DB进行交互,这意味着我连接到数据库,在那里做我的东西,断开连接并处理连接。因此,在查询时,我的数据库连接只存在几(毫秒)秒。这在java / play中是不同的吗?或者它只是在Play!应用程序(这不是我写的)中很难实现?
  2. 为什么我的数据库连接从不为0?我知道我的应用程序的2个实例可能永久地连接到数据库,但是不应该将这个连接合并到那么?现在,感觉来自Play!App的每个查询都会创建至少2个新的数据库连接。
  3. 当我通过My​​SQL工作台连接到服务器时,连接 从27跳到29(而不是28)。那么数据库连接可能不完全准确,但可能是通过另一个指标(如可用内存)来计算的?
  4. 缩放RDS实例时,我是否应该担心这个问题?如果每个用户交互都使用几个数据库连接,那么我很快就会达到一个限制(我读过关于手动更改此值而不是由AWS计算)。
  5. 有没有办法在AWS / MySQL中查看当前的数据库连接?也许这可以帮助我找到关于这个问题的更多信息......?

1 个答案:

答案 0 :(得分:1)

大多数问题都有一个简单的答案:Playframework使用a connection pool,这意味着Play会在每次需要使用数据库连接时打开许多连接并重复使用它们。根据应用程序的配置方式,连接到池中的数量会增加,这就是您在监视中看到峰值的原因。

请参阅此问题以了解连接池的重要性:

Why we need a connection pooling for JDBC?