在中等负载下,我们偶尔会在某个数据库上收到以下错误。
“System.InvalidOperationException:超时已过期。在从池中获取连接之前已经过了超时时间。这可能是因为所有池连接都在使用中并且达到了最大池大小。”
我已经梳理了代码,我们正在关闭 finally 块中的连接,就像我们应该做的那样,除了在我们已经建立的少数情况下很少被调用。我们将在下一个版本中修复这些代码,但为了解决当前的生产问题,我建议将最大池大小增加到 300。我们目前遇到的最大并发用户数约为 110,这显然超过了默认池大小( 100)。
我还建议确保我们到特定 SQL Server 实例的所有连接字符串都是相同的,以避免不必要地创建多个连接池。我希望当我们需要在单个 SQL Server 实例中切换数据库时,我们可以在实际 SQL 查询之前使用USE [Database]语句。
你们有什么想法、建议、建议或陷阱需要我们注意吗?