网络超时问题?

时间:2011-04-07 12:06:12

标签: c# asp.net networking

我不知道这是什么错误..我不能再打开我的网站了

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

2 个答案:

答案 0 :(得分:3)

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

(您正在使用连接池,可能没有关闭您的连接。完成SqlConnection或类似的连接对象后,请在其上调用.Close()

答案 1 :(得分:3)

10 Tips for Writing High-Performance Web Applications

连接池

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

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

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