访问网站时,提示:超时时间已到。超时时间已到,但是尚未从池中php 获取访问ip连接。出现这种情况可能是因为所有池连

444 - 博客频道 - CSDN.NET
http://blog.csdn.net/cat_toys/article/details/5665968
该博客违反了网站规则被关闭,请与管理员联系 Email:当前位置: >
> 再提treeview问题开贴再提问运行提示:超时时间已到。超时时间已到,但是尚未从池中获取连接。出
再提treeview问题开贴再提问运行提示:超时时间已到。超时时间已到,但是尚未从池中获取连接。出
johngoofy & at
再提treeview问题开贴再提问    
运行提示:超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
表结构如下: &
& varchar 50
& varchar 50
以下是我最新的代码:
using & System.D
using & System.C
using & System.C
using & System.W
using & System.Web.S
using & System.Web.UI;
using & System.Web.UI.WebC
using & System.Web.UI.WebControls.WebP
using & System.Web.UI.HtmlC
using & System.Data.S
using & System.Data.SqlC
using & System.C
public & partial & class & Default9 & : & System.Web.UI.Page
& protected & void & Page_Load(object & sender, & EventArgs & e)
& if & (!IsPostBack)
& AddTreeView(1, & (TreeNode)null);
& protected & void & AddTreeView(Int64 & ID, & TreeNode & tn)
& string & CustomerDataConnectionString & = & System.Configuration.ConfigurationSettings.AppSettings[ &ConnectionString &];
& SqlConnection & objConn & = & new & SqlConnection(CustomerDataConnectionString);
& String & strCmd & = &
&select & DETAIL,NAME & from & AAAA & where & ID= & & + & ID;
& SqlCommand & objCmd & = & new & SqlCommand();
& objCmd.Connection & = & objC
& objConn.Open();
& mandText & = & strC
& SqlDataReader & objDR & = & objCmd.ExecuteReader();
& while & (objDR.Read())
& if & (tn & == & null)
& TreeNode & myNode & = & new & TreeNode();
& myNode.Text & = & objDR[ &DETAIL &].ToString().Trim();
& myNode.Value & = & objDR[ &NAME &].ToString().Trim();
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
这是个老问题了!你就查两点: 一、看所有open的连接是否都close了。 二、如果访问量很大,加上Max&& Pool&& Size=512这一句,当然这是要以损失系统性能为代价的! 这样以后一定可以解决你的问题!
解决方案一
我 想原因可能是并发操作。DataReader是独占连接的,就是说你的程序可能设计上有问题。比如说最大连接设100,假设有100个人同时使用 DataReader正在读取数据库内容,那么当第101人读取的时候,连接池中的连接已经没有了,就会出现上面的错误。DataReader是独占连接 的,每个DataReader都要占用一个连接。当然这个情况是偶尔出现的,所以会很长时间出现一次,因为只有同时有超过连接池最大连接数量的并发操作才 会发生。而且你加大并发数量只能暂时缓解问题,如果你加大到200个并发连接,如果有201 人同时操作怎么办?你说了你使用Connection对象的Close()方法,这是不行的,因为Close()方法仅仅是关闭连接,但这个连接没有释 放,还是被这个对象占用,要释放必须使用Connection的Dispose()方法显式释放连接才可以,否则这个对象占用的连接只能等到垃圾收集的情 况下才能被释放。这种情况肯定会出现&超时时间已到&的错误。
解决方法:&&&&&&&&& 1 修改几个关键页面或访问比较频繁的数据库访问操作,使用DataAdapter和DataSet来获取数据库数据,不要使用DataReader。&&&&&&&&& 2 在访问数据库的页面上使用数据缓存,如果页面的数据不是经常更新(几分钟更新一次)的话,使用Cache对象可以不用访问数据库而使用缓存中的内容,那么可以大大减少连接数量。&&&&&&&&& 3 修改代码,把使用Connection对象的地方都在Close()后面加上Dispose()调用。&&&&&&&&& 4 建议对数据库操作进行大的修改,建立自己的数据库操作代理类,继承System.IDisposable接口,强迫释放资源,这样就不会出现连接数量不够的问题了。
解决方案二
解决方法(*):WEB.config 里面:在数据库连接加 Max Pool Size = 512;server=uid=;pwd=;database=2004;Max Pool Size = 512;"&一劳永逸。
解决方案三
估计是连接(Connection)对象没有Close。倒是不必Dispose,而DataReader用完后应该关闭,但不关闭也没问题,只是不关闭的话此连接对象就一直不能用,只要你最终关闭了连接对象就不会出问题。&&&&&&&&& 连接对象在Open后的操作都放在try块中,后面跟一个finally块:conn.Close();
/*********************************************************************************/2.1修改连接池的连接生存期因为默认值是60秒,即连接从应用程序被释放后可以在池中保存的时间。  如果是ODBC的话  则可以在ODBC Data Source Administrator中手动更改,该程序位于&Start&菜单中的&Programs&-&"Adminstrative Tools"(中文名:管理工具)下,或从"Control Panel"(中文名:控制面板)中打开&ODBC Data Source Administrator&(ODBC数据源管理器),再选择&Connection Pooling&(连接池)选项卡,双击驱动程序中的&SQL Server&,选择&Pool Connetions to this drive&(使用池连接该驱动程序),把下面的时间60秒改的大一点,例如120。  如果是SqlConnection的共享连接  则为ConnectionString属性Connection Lifetime数值名称指定一个值,该值默认情况下是0,表示连接永远不会从池中被自动移走。如果指定一个不同的值,那么一旦连接被返回到池中,该值将和连接的创建时间及当前时间进行比较。如果生存期超过了Connection Lifetime的值,那么连接将从池中被移走。
<span style="color: #改变连接池的大小在连接字符串的后面加上以下代码:Enlist=Pooling=Max Pool Size=300;Min Pool Size=0;Connection Lifetime=300;user id=packet size=1000
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:164391次
积分:2707
积分:2707
排名:第5092名
原创:103篇
转载:48篇
评论:65条
(1)(1)(3)(9)(1)(2)(6)(9)(3)(1)(5)(5)(3)(3)(7)(3)(2)(5)(8)(6)(6)(3)(15)(13)(16)(12)(1)(1)(1)posts - 118,&
comments - 21,&
trackbacks - 1
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
一开始我以为是connection或datareader没有关闭的原因。把所有代码检查一遍,因为使用了很多sqlhelper,恐怕有未关闭数据库连接的情况。结果还真找到一些,进行处理后,刚开始果然没有出现。欣喜中,因为让别人看到这样的页面实在是不爽,何况现在正向各高校社团进行推广。
好景不长,上传些东西后又出现该死的状况。又和同事讨论了一下,再查msdn,得到的解决方法是修改connectionstring,加上&#8220;max pool size=300&#8221;。哈哈,运行了几天,还没出什么问题。ok!
阅读(...) 评论()超时时间已到,但是尚未从池中获取连接。-.NET技术/ASP.NET-asp.net-电脑编程网超时时间已到,但是尚未从池中获取连接。-.NET技术/ASP.NET作者:xcj226 和相关&&.net做的网页运行时出错,错误信息如下:“超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接都在使用,并且达到了最大池大小。“请各位高手指点,该如何改正!!!!!------回答---------------其他回答(15分)---------连接没关闭, 消耗资源过多& 检查程序using(SqlConnection conn = SqlConnection(&server=uid=pwd=123;database=max pool size=255&))& {mandTimeout = 1000;& }&
&------其他回答(10分)---------忘记释放连接了?------其他回答(15分)---------cmd.despose() conn.close()到哪都别忘这两句相关资料:|||||||超时时间已到,但是尚未从池中获取连接。-.NET技术/ASP.NET来源网络,如有侵权请告知,即处理!编程Tags:                &                    

我要回帖

更多关于 php 获取访问ip 的文章

 

随机推荐