【问题标题】:Entity framework polling实体框架轮询
【发布时间】:2018-05-13 13:48:57
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您的代码是否鲁莽地创建连接,例如为每个查询打开一个新连接?您可能需要重新启动数据库实例才能访问它,当您这样做时,请密切关注SHOW PROCESSLIST,看看当您开始运行您的应用程序时它是否开始被休眠连接阻塞。

标签: mysql .net entity-framework amazon-web-services amazon-aurora


【解决方案1】:

这里有两点:

点 1:

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

一般来说,EF 中的 DB 上下文是一个 IDisposeable 对象。这意味着,如果您将其放在“使用”块中,它将关闭连接并为您处理对象。像这样的:

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

否则,如果它不在 using 块内,则应始终记住将其丢弃。我也会明确关闭保险连接。

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

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

【讨论】:

  • 非常感谢,我会调查一下
猜你喜欢
  • 1970-01-01
  • 2021-12-25
  • 2013-03-17
  • 2014-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
相关资源
最近更新 更多