一个更新:我没有找到此问题的根本原因,但是通过回到单服务器设置而不是将Web和DB分为两个不同的服务器来解决。
SQL Server直接安装在Web服务器上,并且数据库已移动。此后没有任何与连接有关的错误。
将基于.NET的网站(基于Dotnetnuke / DNN的网站)移至新服务器后,当应用程序池被回收而网站在几分钟内不可用时,我开始看到多个错误:
System.InvalidOperationException:超时已过期。从池中获取连接之前已经过超时时间。这可能是由于所有池化连接都在使用中,并且已达到最大池大小而发生的] 错误位于:System.Data.ProviderBase.DbConnectionFactory.TryGetConnection] >> 在高峰时段,错误可能会在事件日志中发生数百次,并且网站向用户返回了通用的“ 503不可用”错误(而不是错误页面的自定义,用户友好版本)。 该Web应用程序未发生变化,并且在移动之前一直运行良好,因此,我敢肯定这不是由于编码错误而导致数据库连接处于打开状态。在旧服务器(和本地开发环境)上,站点在回收时将变得无响应,即用户等待20-30秒,直到站点启动并运行。没有引发异常,绝对没有最终用户错误。 新旧服务器环境之间的主要区别是:
新:
旧:
我怀疑这与处理与位于单独服务器上的远程SQL Server的连接的方式不同有关。也许与IIS回收应用程序池的方式有关,导致在关闭现有版本的同时旋转Web应用程序的新实例时导致问题。
有什么想法吗?
编辑:
我已经尝试通过将“ Max Pool Size = 500”添加到连接字符串来增加最大池大小。没有效果。重新启动Web应用程序时,使用perfmon监视活动的连接数:在回收期间,它会增加到大约80个连接(从大约25-30个连接)。即在最大池大小附近没有位置。
将基于.NET的网站(基于Dotnetnuke / DNN的网站)移至新服务器后,当应用程序池被回收而该网站因几个原因而无法使用时,我开始看到多个错误。
一个更新:我没有找到此问题的根本原因,但是通过回到单服务器设置而不是将Web和DB分为两个不同的服务器来解决。
SQL Server直接安装在Web服务器上,并且数据库已移动。此后没有任何与连接有关的错误。
一个更新:我没有找到此问题的根本原因,但是通过回到单服务器设置而不是将Web和DB分为两个不同的服务器来解决。
SQL Server直接安装在Web服务器上,并且数据库已移动。此后没有任何与连接有关的错误。