我注意到,在我们托管的 NopCommerce 网站(使用 Entity Framework )上,如果我在该网站上运行爬虫(以检查断开的链接),它会使整个网络服务器离线几分钟,并且没有其他托管网站回应。这似乎是因为 Entity Framework 正在打开 30 多个数据库连接并且每秒运行数百个查询(每个页面 View 大约 20-40 个)。
我无法更改 NopCommerce 使用 EF 的方式(这需要数周时间)或更改正在使用的 EF 的版本,因此我可以通过限制它使用的并发连接数来减轻它对 SQL Server 的影响,以提供其他托管在同一台服务器上的站点是否有更公平的数据库访问机会?
我最理想的做法是将特定应用程序的并发数据库连接数限制在 10 个左右。
最佳答案
我认为最好的办法是在连接字符串中使用 Max Pool Size
设置。这限制了连接池中的最大连接数,我认为这意味着应用程序将使用的最大连接数。但我不确定的是,如果它无法从池中获取连接,是否会导致异常。我从未尝试过以这种方式限制连接。
这里有一些关于您可以放入 ADO.NET 连接字符串的设置的阅读 Material :
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring%28v=vs.100%29.aspx
下面是关于“使用连接池”的更多阅读:
http://msdn.microsoft.com/en-us/library/8xx3tyca%28v=vs.100%29.aspx
https://stackoverflow.com/questions/12057458/