我们在服务器上运行了一个网站。我们有一个“生产”实例和一个“临时”实例,每个实例都有自己的数据库。 MSSQL Server在同一服务器上本地运行。
今天,“生产”网站突然倒闭了。查看日志,出现以下异常:
System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> System.InvalidOperationException: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.
与此同时,“升级”网站正常运作。
在尝试弄清楚发生了什么的同时,我尝试了各种各样的事情,比如重新创建应用程序池和IIS应用程序。我还将“生产”IIS应用程序连接到“临时”应用程序的同一个应用程序池,仍然是同样的问题。当然也重新启动了服务器。
另外,我直接运行“生产”网站的可执行文件(作为控制台应用程序)并且它正常工作。所以这只是在IIS下运行时才会出现问题。
我尝试的最后一件事是,我重新配置了“登台”网站以使用“生产”数据库,并且我完全震惊它正常工作。因为我认为问题是“生产”数据库本身。
我根本不知道这里发生了什么。非常感谢任何帮助。
答案 0 :(得分:0)
如果使用连接池中的所有连接,则几乎可以肯定,因为您的应用程序正在打开数据库连接并且无法关闭它们。
由于您使用的是Entity Framework,可能是因为您的应用程序无法dispose of the DbContext object。
这与生产数据库无关;可能是您的生产站点与登台站点之间的活动增加,这使得应用程序错误更快地显现出来。