我有一个Web应用程序托管在IIS 7上,使用Oracle.DataAcess.dll for .NET执行连接和查询到Oracle数据库。在过去的一周中,我们突然遇到了许多由该组件引发的错误,显示为:“连接请求超时”。经过几个小时的调试,我发现错误确实是说连接请求已超时,并抛出带有代码号码-1000的错误(来自oracle.DataAccess,没有抛出ORA-错误)。在Oracle数据库中,我看到只有一个连接用于该机器,并且处于“INACTIVE”状态。尽管只有一个连接,但在调试时实际上超时了,当尝试打开连接时。我们不使用连接池策略,但是在调试模式下,我看到有一个默认的连接池(即使未指定值),它表明最大连接数为100,超时时间为15秒,生命周期为0。这意味着该机器上的应用程序可以处理100个连接。
话虽如此,我无法理解为什么我的应用程序可以创建多达100个连接(根据默认连接池的设置),但我的数据库只显示了几个连接,而我却收到“连接请求超时”的错误,错误代码为-1000。
需要注意的是,我能够解决这个问题,具体方法是重新启动我的应用程序,但这已经不止一次发生了,所以这不是解决这个问题的方法...
我是否漏掉了什么内容?
我的应用程序是否实际上使用了比我看到的更多的连接?
*更新: 在调试期间,我发现许多线程卡在Oracle.DataAccess的“PopulatePool”方法上,还有许多其他线程卡在“WaitForRegularConnection”方法上...