【问题标题】:network timeout problem?网络超时问题?
【发布时间】:2011-04-07 12:06:12
【问题描述】:

我不知道这是什么错误。我无法再打开我的网站

Server Error in '/site' Application.
Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached. 

请帮帮我.. tnx

【问题讨论】:

  • 您的网站是在共享服务器上(与其他网站共享)还是在自己的服务器上?
  • 网站是你开发的,对吧?

标签: c# asp.net networking


【解决方案1】:

超时已过期(某事花费的时间超过了应有的时间)。具体来说,在从连接池获得连接之前经过的超时时间。事实证明,这可能是因为所有池连接都在使用中并且达到了最大池大小。

(您正在使用连接池并且可能没有关闭您的连接。在您完成SqlConnection 或类似的连接对象后,调用.Close() 就可以了)

【讨论】:

  • 这个错误是否与 IIS 中的线程池相关,而不是与数据库的连接?
  • 检查您的代码:您将保持连接打开。完成后关闭它们,重新编译,重新部署。
  • @Jon - 不,那里与 IIS 无关:它谈论的是连接池。它显示在网络浏览器中的事实仅仅是因为它是一个网络应用程序
  • 如何帮助您?问题是,您的代码打开了一些数据库连接。该问题的解决方案是,您需要关闭它们。这就是答案!!
【解决方案2】:

10 Tips for Writing High-Performance Web Applications

连接池

在您的 Web 应用程序和 SQL Server™ 之间建立 TCP 连接可能是一项昂贵的操作。一段时间以来,微软的开发人员已经能够利用连接池,允许他们重用与数据库的连接。

当您完成连接后,请务必关闭它们。不要相信公共语言运行时 (CLR) 会在预定时间为您清理和关闭连接。 CLR 最终会销毁类并强制关闭连接,但您无法保证对象上的垃圾回收何时真正发生。

要以最佳方式使用连接池,需要遵守一些规则。首先,打开连接,完成工作,然后关闭连接。如果必须(最好应用技巧 1),可以在每个请求上多次打开和关闭连接,而不是保持连接打开并通过不同的方法传递它。其次,使用相同的连接字符串(如果您使用集成身份验证,则使用相同的线程标识)。如果您不使用相同的连接字符串,例如根据登录用户自定义连接字符串,您将无法获得连接池提供的相同优化值。而且,如果您在模拟大量用户时使用集成身份验证,那么您的池化效果也会大大降低。 .NET CLR 数据性能计数器在尝试跟踪与连接池相关的任何性能问题时非常有用。 每当您的应用程序连接到在另一个进程中运行的资源(例如数据库)时,您应该通过关注连接到资源所花费的时间、发送或检索数据所花费的时间以及往返次数来进行优化。优化应用程序中的任何类型的进程跳跃是开始获得更好性能的第一步。

【讨论】:

  • 复制所有文字是抄袭。留下链接。
  • @Aliostad - 我虽然是这样..但它认为粘贴链接+内容更好,这样他就可以轻松获得更多想法
  • 只需要带一个小sn-p,作为报价单。我会重新考虑我的否决票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
  • 2015-06-02
  • 1970-01-01
相关资源
最近更新 更多