【问题标题】:When we can use ClearAllPools method?我们什么时候可以使用 ClearAllPools 方法?
【发布时间】:2012-08-27 11:55:23
【问题描述】:

我面临以下问题:

连接池已达到最大连接数

我遵循了所有建议。问题不像以前,但很少发生!

我将Using statement 与我的所有联系人和读者一起使用。

最近我遇到了以下错误,我不得不重置iis 来解决我的问题。


Connection Pool has reached the maximum number of connections. at IBM.Data.Informix.IfxConnectionPool.ReportOpenTimeOut()
at IBM.Data.Informix.IfxConnectionPool.Open(IfxConnection connection)
at IBM.Data.Informix.IfxConnPoolManager.Open(IfxConnection connection)
at IBM.Data.Informix.IfxConnection.Open()
at DB_Connection_s.DB_Connection.GetUserSystems(String emp_num)

现在我读到了这个方法ClearAllPools()。但我不知道什么时候使用这个方法。如果这被认为是防止have to重置iis以解决请求超时问题的好解决方案? ?

【问题讨论】:

  • 你能配置连接池的大小吗? Informix 数据库服务器是否与 IIS 在同一台机器上运行?如果是这样,您是否使用与 Informix 的共享内存连接?如果您正在使用与本地 Informix 服务器的共享内存连接,那么您可能已经超过了 Informix 配置为管理的同时连接数。然后您需要增加该配置并重新启动 Informix。如果您使用的不是共享内存连接,则以同样的方式连接没有上限。
  • 那你为什么不试试 Max Pool Size=600 或 1000 呢?
  • 您确定您的应用没有达到“正常”限制吗? IIS 可以创建许多线程,尤其是当您有许多 CPU/内核时。否则,您可能在 ADO.NET informix Connection 对象上缺少 Dispose(或缺少 using)。 (PS:在cmet中回复某人时请使用@[user],否则像我这样的评论者不会收到您的消息)
  • @just_name - 基本上可能是 3 件事:1) 缺少 using/dispose,2) 可以克服更改最大池大小的实际限制,3) ADO.NET 中的错误提供者。我会从一个非常小的应用程序开始尝试重现问题,如果它工作正常,然后再次检查您的代码。
  • 我对 .NET 的了解可以用 72 磅文本写在邮票上。我没有看到任何可以帮助我帮助您的信息;您需要了解 Windows 和 .NET(最好也了解 Informix)的人。那个人不是我。

标签: c# asp.net performance connection-pooling informix


【解决方案1】:

当您没有任何活动连接时,您可以调用 ClearAllPools()。

还可以查看http://www.codeproject.com/Articles/46267/Connection-Pooling-in-ASP-NET

确保您的应用程序正确且一致地关闭所有数据库连接。

确保数据库在线。

增加连接超时时间。

错误模式表明连接在很长一段时间内“泄漏”。要解决此问题,请确保您的应用程序正确且一致地关闭所有数据库连接。

该异常并不表示数据库处于脱机状态。异常表示连接池有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    相关资源
    最近更新 更多