Entity framework 轮询

Entity framework polling

我有一个网站,它使用轮询不断从我使用 .NET 和 Entity framework 设置的 API 获取信息。我的数据库托管在 AWS Aurora MySQL 中。今天,当我使用 MySql workbench 访问我的生产数据库时,它说连接太多。

据我所知: 1. Entity Framework 管理连接的打开和关闭 2. AWS 自动扩展到用户请求

为什么我会遇到这个问题?

这是 AWS 问题还是应用程序中的 .NET 问题?

这里有两点:

Point1:

Entity Frameworks 确实管理连接,但这仍然取决于您如何使用它。

一般来说,EF 中的数据库上下文是一个 IDisposeable 对象。这意味着,如果您将它放在 "using" 块中,它将关闭连接并为您处理该对象。像这样:

using (var db = new DBContext())
{
   [...]
}

否则,如果它不在 using 块内,您应该始终记住处置它。为了保险,我也会明确关闭连接。

第 2 点: AWS RDS 不会自动扩展。您可以在创建时选择数据库实例大小,然后您可以手动更改实例类型。您甚至可以使用某种自动化功能在 运行 时间垂直缩放它,但垂直缩放有其自身的局限性:

  1. 如果您的数据库位于单个可用区中,这意味着要更改数​​据库实例类型,您将有停机时间,因为数据库实例需要关闭并重新启动。
  2. 如果它是多可用区实例,您现有的连接仍然会断开,您的应用程序需要重新建立连接。