【发布时间】:2016-08-03 13:54:49
【问题描述】:
我有一个限制为 60 个并发连接的 Azure 数据库。我的问题是我有几个爬虫填充这个数据库,供我们的网站使用实体框架使用。
多个爬虫很快就会耗尽所有连接并出错。我尝试在连接字符串中设置最大池大小值,但这似乎并未对实际数据库连接施加任何限制。
我可以将DbContext 包装在一个单例中,但是我会将整个爬虫限制为单个连接。
还有其他方法可以实现吗?
【问题讨论】:
-
您使用的是什么版本的 EF?结合连接字符串中的
Max Pool Size=60;,您是否设置了Pooling=true;? (尽管那说true无论如何都应该是默认设置) -
你是不是在完成连接后才释放连接?
-
@GeoffJames 是的,池化设置为 true。我试过设置 Max Pool Size =1;看看我是否可以限制连接。尽管如此,它仍然会根据需要产生更多连接。我目前使用的是 EF 6.1.3。我尝试过 Core,但按问题分组使其完全无法使用。
-
@JamieR 我们存储库中的所有内容都包含在 using 语句中。该代码利用了 TPL 库,因此它同时抓取 10 个不同的客户并不少见。有 10 个左右的盒子最终会用完。
-
@mscard02 只是想确定一下;)
标签: c# asp.net-mvc entity-framework connection-string azure-sql-database