ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

连接池问题

2021-08-24 14:35:01  阅读:177  来源: 互联网

标签:SqlHelper 查询 问题 100 101 连接 连接池


asp.net 数据连接池 异常:超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。 原因分析:asp.net的数据库连接池的连接都被占用了。 很多同学都表示不解,表示没有过数据库连接池。 怎么开启数据库连接池? 数据库连接池在哪里,很多同学都以为应该在数据库服务器,其实不对,连接池是在应用服务器上,有asp.net管理连接池。 数据库连接池在哪里呢,我们用代码验证它的存在。 一、web.config的连接字符串的配置 1 2 3 二、运行没报异常代码 1 2 3 4 5 for (int i = 0; i < 100; i++) { var reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, System.Data.CommandType.Text, "select * from T_MOB_ENTERPRISE"); Response.Write(i.ToString() + "
"); } 三、运行报异常代码 1 2 3 4 5 for (int i = 0; i < 101; i++) { var reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, System.Data.CommandType.Text, "select * from T_MOB_ENTERPRISE"); Response.Write(i.ToString() + "
"); } 比较上面这段代码,发现区别就在于前一个执行100次查询,后一个执行了101次查询。后一个查询抛出【超时时间已到,但是尚未从池中获取连接】异常 原因是:微软默认给我们启动了连接池,默认的连接数为100,上面的连接字符串等价于 1 2 3   由于我们的代码每次查询完以后都没释放连接,导致101次查询时,没有可用的连接。 为什么要开启连接池? 主要是为了性能考虑,建立一个tcp连接需要三次握手,比较费时! 连接池复用连接,用完不关闭,直接把连接退还给连接池! 为什么会报超时时间已到,但是尚未从池中获取连接错误 是因为连接池有个最大的数目控制,Max Pool Size 。如果连接池最大设置成100,已经申请到了100个连接,并且100个连接都被占用,当第101个连接请求时,会报上面的异常,因为连接池没有可用的连接了。 怎么避免上面的错误 1、及时的关闭连接 调整成下面的代码,就会发现执行101次查询都只有1个tcp连接,后续的100次查询都是用的同一个连接。因为用using后,编译器自动会生成释放连接的代码。连接池的中一个连接循环使用! 1 2 3 4 5 6 7 for (int i = 0; i < 101; i++) { using (var reader = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, System.Data.CommandType.Text, "select * from T_MOB_ENTERPRISE")) { Response.Write(i.ToString()+"
"); } }   有图有真相 2、适当的调整Max Pool Size 如果并发量大,可以调整为512,1024等

标签:SqlHelper,查询,问题,100,101,连接,连接池
来源: https://www.cnblogs.com/mycls/p/15180134.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有