【发布时间】:2012-08-21 14:46:22
【问题描述】:
我注意到,在我们托管的 NopCommerce 网站(使用实体框架)上,如果我在网站上运行爬虫(检查损坏的链接),它会使整个网络服务器脱机几分钟,并且没有其他托管网站回应。这似乎是因为 Entity Framework 正在打开 30 多个数据库连接并每秒运行数百个查询(每个页面视图大约 20-40 个)。
我无法更改 NopCommerce 使用 EF 的方式(需要数周时间)或更改正在使用的 EF 版本,所以我可以通过限制它使用的并发连接数来减轻它对 SQL Server 的影响,以提供其他托管在同一台服务器上的网站访问数据库的机会更大?
我最理想的做法是将特定应用程序的并发数据库连接数限制在 10 个左右。
【问题讨论】:
-
实体框架本身不管理多个并发连接。如果您将其指向一个连接字符串,那么它将为每个上下文实例创建一个连接(或者如果您使用 ADO.NET 连接池,默认情况下是从池中获取),并在释放上下文时释放该连接。您可以通过自己管理连接并在创建连接时将连接传递给上下文实例来在应用程序中更改此设置。这样做是应用程序架构必须支持的;这不是 EF 控制的东西。
标签: sql-server entity-framework entity-framework-4 nopcommerce