关键词不能为空

当前您在: 主页 > 英语 >

Timeout expired 解决思路

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-15 14:31
tags:

-

2021年2月15日发(作者:析梦)


dOperationException:


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.


Timeout


expired


异常是个很棘手的异常,想必几乎每个人都碰到过。有时可真是对它咬牙


切齿,拿它没办法。


angelsb


这篇文章很好,希望对大 家有用。我也是看到他讲得很好,才


翻译过来的,水平有限,请多多指教


.



dOperationException:


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.



!


在另一个进程 中


,


又出现了连接池已满的问题


,


这是个最让人头痛却又是最常出现的连接


池问题之一


.


原因是在开发过程中很少碰到这个头痛的问题


,


但在部署


APP


到客户端时


,


却总


是不经意地跑出来了


.


我想


,


我应该花些许时间对这个问题进 行一次完整的总结吧


.


发生的本质是什么


?


我们来认真看一下可能会发生这种异常的两种情况



1)


你使用了超过最大的连接池连接数


(


默认的最大连接数是


100)


在 大部分应用程序中


,


这种情况是很少出现的

.


毕竟当你使用连接池时


,100


个并行连接是一


个非常大的数字


.


根 据我的经验


,


会造成这种异常的原因的最大可能


,


应该是在一个纯种下打


开了


100


个连接


.


程序代码




SqlConnection[] connectionArray = new SqlConnection[101];


for (inti = 0; i<= 100; i++)






{


connectionArray[i]


=


new


SqlConnection(


;Integrated


security=sspi;connection timeout=5


connectionArray[i].Open();






}




解决 方案


:


如果你确定你将会使用超过


10 0


个并行连接


(


在同一连接字符串上< /p>


),


你可以增加最


大连接数


.


2)


连接泄漏



我个人认为的连接泄漏定义是你打开了一个连接但你没有在你的代码中执行

< br>close()



dispose().


这范围不仅仅是你忘记了在


connection


后连 接后使用


dispose()



clo se()


对期进行关



,


还包括一些你已经在相关


connection


后写 好了


close()


却根本没有起作用的情況

< br>.


我们来看


看下面的代码


:


程序代码




using System;


;


ent;


public class Repro


{

-


-


-


-


-


-


-


-



本文更新与2021-02-15 14:31,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/655459.html

Timeout expired 解决思路的相关文章