超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

原文链接:https://www.cnblogs.com/zzh1236/archive/2013/04/08/3008293.html

                https://tech.powereasy.net/cpzsk/dynetbbcjwt/content_20555

时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

英文错误:

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.

 

问题描述:我们获取连接超过连接池最大值时产生如上异常。通常连接池最大值为100。当我们获取连接超过最大值时,ADO.NET等待连接池返回连接而超时,这样将抛出如上异常
解决办法:首先要做的是在我们使用连接后立即关闭连接。如果没有关闭连接那么连接将保存到连接池中知道GC来销毁。这种情况下你以为连接池没有到达最大值但实际上连接池已经到达了最大值 其次我们可以通过连接字符串中的Max Pool Size = N;来动态扩大连接池中的连接最大数量。

说明:

也就是在connectionString中如果未指定max pool size的值,则max pool size=100,当访问人员同时连接数据库的数量为101人时,则等待SqlConnection.ConnectionTimeout设置的时间(默认是15 秒)后,还是没有可用的Connection则会出现上面的错误。

当我们设置为:

"Server=(local); Integrated Security=SSPI; Database=Northwind; Max Pool Size=512; Min Pool Size=5"  时。则访问人员同时连接数据库的数量为513时,则等待SqlConnection.ConnectionTimeout设置的时间(默认是15 秒)后,还是没有可用的Connection则 就会出现上面的错误。

 

 

 

问题分析:可能是因为所有池连接均在使用,并且达到了最大池大小。

解决办法:SF网站程序中找到WebSiteConfigConnectionStrings

示例:

原内容:server=***;uid=***;pwd=***;database=***;

修改为:server=***;uid=***;pwd=***;database=***;Max Pool Size = 512;

posted @   yinghualeihenmei  阅读(100)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-06-26 SQL Server ISDATE()实例讲解
2023-06-26 C# DateTime去掉时分秒几种方法
2023-06-26 C#获取指定日期所在周、月、年的第一天和最后一天;当天零点时间/当天最后的时间
2023-06-26 html去除页面的滑动条
2023-06-26 CSS样式(内联、内部、外部)
2023-06-26 巧用AJAX的BEFORESEND 提高用户体验,避免重复数据
点击右上角即可分享
微信分享提示