gpt4 book ai didi

.net - ODP.NET 连接请求超时

转载 作者:行者123 更新时间:2023-12-03 21:32:39 27 4
gpt4 key购买 nike

我有一个托管在 IIS 7 上的 Web 应用程序,使用 Oracle.DataAcess.dll for .NET 来执行对 Oracle 数据库的连接和查询。
上周突然遇到这个组件抛出的无数错误,说:“连接请求超时。”。

经过几个小时的调试,看到错误真的是说连接请求超时了,抛出错误代码为:-1000 (Of oracle.DataAccess, no ORA-error was throwed)。
在 Oracle 数据库中,我看到那台机器只有一个连接并且它处于“非事件”状态。
虽然只有一个连接,但在调试时尝试打开连接实际上超时了。

我们不使用连接池策略,但正如我在 Debug模式下看到的,有一个默认连接池(即使没有指定值)说最大连接数为 100,超时为 15 秒,并且生命周期为 0。这意味着该机器上的应用程序可以处理 100 个连接。

话虽如此,我无法弄清楚为什么我会收到“连接请求超时”。错误,错误代码=-1000,当我的应用程序最多可以创建 100 个连接(根据默认连接池的设置),但我的数据库只显示几个连接(发生在我的应用程序有一个连接和 5 个连接时 - 100 分)。

我会注意到我能够在回收我的应用程序后专门解决这个问题,但这已经发生了不止一次,所以这不是这个问题的解决方案......

这是我缺少的东西吗?

我的应用程序实际使用的连接数是否比我看到的更多?

*更新:
我在调试过程中发现有很多线程卡在 Oracle.DataAccess 的“PopulatePool”方法上,还有很多其他线程卡在“WaitForRegularConnection”方法上......

All threads
Populate pool stack trace

最佳答案

注意 Oracle 调用,发送了哪些查询以供执行,连接超时不取决于连接池最大计数,您的请求将永久服务于一个连接。记录您的请求,然后尝试模拟它们,检查数据库中的执行持续时间。

关于.net - ODP.NET 连接请求超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43295135/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com