我在Server 2008 R2上运行IIS。 最近,我看到了很多像这样的错误:
在从池中获取连接之前已经超时。 发生这种情况的原因可能是因为所有连接池都在使用中,并且达到最大池大小。
当我进入IISpipe理器并查看工作进程时,我发现这个应用程序池有一堆已经运行了一个多小时的请求。 我猜测他们坚持数据库连接,这就是为什么没有人可以得到一个。
所以,有两个问题:
谢谢!
IIS没有build立这些数据库连接,你的应用程序是。
你需要根据你正在使用的应用程序框架来解决这个问题(从它的外观来看,我猜测.Net与连接池) – 我猜你是在泄漏连接,可能是由于没有正确清理(调用Close或Dispose)或者有一些奇怪的exception处理代码,忘记清理。
IIS不能奇迹般地做到这一点,因为你的应用程序没有表明它已经完成了工作 – IIS不知道数据库是否慢或exception处理程序没有正确清理,它只是知道它开始点X,它还没有回来,所以它可能仍然很忙。
某些应用程序使用难以置信的长时间连接,并且不会强制性地终止连接。