【问题标题】:asp.net connection pooling: automatically testing & validating connections?asp.net 连接池:自动测试和验证连接?
【发布时间】:2021-02-16 14:00:15
【问题描述】:

我知道对于某些连接池,您可以指定池管理器可以用来验证连接的测试查询。

asp.net 有什么类似的吗?我遇到问题,Web 应用程序和数据库之间有防火墙,它正在关闭空闲连接 - 结果是用户收到“ORA-03135:连接丢失联系”错误。重新加载页面没问题,但我想彻底消除这个错误。

【问题讨论】:

  • 与此处相同的问题:forums.oracle.com/forums/…?
  • 我收集到的 Oracle 特定错误。我很惊讶他们没有办法检测连接。我认为解决方法是编写一个心跳应用程序来为您处理连接池(它们真的很容易实现)。绝对是一个 hack,但它会解决你的问题。
  • .net sqlserver 池是否有参数来指定查询来测试连接?

标签: asp.net oracle connection-pooling


【解决方案1】:

如 Oracle documentation 中所述,连接字符串中有Validate Connection=true 设置。

“验证连接属性验证来自池的连接。仅在绝对必要时才应使用此属性,因为它会导致在将每个连接提供给应用程序之前立即对数据库进行往返验证。如果无效连接并不常见,开发人员可以创建自己的事件处理程序来检索和验证新连接,而不是使用 Validate Connection 属性。这通常会提供更好的性能。"

【讨论】:

    【解决方案2】:

    如果最新的 Oracle 驱动程序还没有解决问题,丑陋的解决方案是构建一个 Windows 服务,每 X 秒 ping 一次数据库。我不确定 X 会是什么,我猜每 30 秒一次。

    【讨论】:

    • 恐怕没有用。有一个数据库连接池,据 .net 池管理器所知,它们都很好。除了防火墙出现,并对连接说“你不工作,我会杀了你”。因此,同时池管理器将连接移交给请求它的下一页,但该连接已死。 ping 数据库无济于事,因为防火墙先生仍然会杀死那个空闲的连接。我见过其他池实现定期测试连接,或者有一个参数来回收它们——这就是我想要的。
    猜你喜欢
    • 2019-05-07
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2012-01-15
    相关资源
    最近更新 更多