[译]连接池和 "Timeout expired"异常
作者:admin 日期:2008-11-27
原文标题:Connection Pooling and the "Timeout expired" exception FAQ
来源:http://blogs.msdn.com/angelsb/archive/2004/08/25/220333.aspx
作者:angelsb
System.InvalidOperationException: 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这篇文章很好,希望对大家有用。我也是看到他讲得很好,才翻译过来的,水平有限,请多多指教.
System.InvalidOperationException: 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 (int i = 0; i <= 100; i++)
{
connectionArray = new SqlConnection("Server=.\\SQLEXPRESS ;Integrated security=sspi;connection timeout=5");
connectionArray[i].Open();
}
解决方案:如果你确定你将会使用超过100个并行连接(在同一连接字符串上),你可以增加最大连接数.
2) 连接泄漏
我个人认为的连接泄漏定义是你打开了一个连接但你没有在你的代码中执行close()或dispose().这范围不仅仅是你忘记了在connection后连接后使用dispose()或close()对期进行关闭,还包括一些你已经在相关connection后写好了close()却根本没有起作用的情況.我们来看看下面的代码:
using System;
using System.Data;
using System.Data.SqlClient;
public class Repro
{
public static int Main(string[] args)
{
Repro repro = new Repro();
for (int i = 0; i <= 5000; i++)
{
try{ Console.Write(i+" "); repro.LeakConnections(); }
catch (SqlException){}
}
return 1;
}
public void LeakConnections()
{
SqlConnection sqlconnection1 = new SqlConnection("Server=.\\SQLEXPRESS ;Integrated security=sspi;connection timeout=5");
sqlconnection1.Open();
SqlCommand sqlcommand1 = sqlconnection1.CreateCommand();
sql...[/i]
来源:http://blogs.msdn.com/angelsb/archive/2004/08/25/220333.aspx
作者:angelsb
System.InvalidOperationException: 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这篇文章很好,希望对大家有用。我也是看到他讲得很好,才翻译过来的,水平有限,请多多指教.
System.InvalidOperationException: 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 (int i = 0; i <= 100; i++)
{
connectionArray = new SqlConnection("Server=.\\SQLEXPRESS ;Integrated security=sspi;connection timeout=5");
connectionArray[i].Open();
}
解决方案:如果你确定你将会使用超过100个并行连接(在同一连接字符串上),你可以增加最大连接数.
2) 连接泄漏
我个人认为的连接泄漏定义是你打开了一个连接但你没有在你的代码中执行close()或dispose().这范围不仅仅是你忘记了在connection后连接后使用dispose()或close()对期进行关闭,还包括一些你已经在相关connection后写好了close()却根本没有起作用的情況.我们来看看下面的代码:
复制内容到剪贴板 程序代码
using System;
using System.Data;
using System.Data.SqlClient;
public class Repro
{
public static int Main(string[] args)
{
Repro repro = new Repro();
for (int i = 0; i <= 5000; i++)
{
try{ Console.Write(i+" "); repro.LeakConnections(); }
catch (SqlException){}
}
return 1;
}
public void LeakConnections()
{
SqlConnection sqlconnection1 = new SqlConnection("Server=.\\SQLEXPRESS ;Integrated security=sspi;connection timeout=5");
sqlconnection1.Open();
SqlCommand sqlcommand1 = sqlconnection1.CreateCommand();
sql...
the page contains markup that is not valid 解决办法
作者:admin 日期:2008-11-13
问题描述:
the page contains markup that is not valid when attached to a master page 当使用了样式跟皮肤的时候,打开.aspx页,就会出现这个东西了。不知是不是Bug
这是MSDN的反馈:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=314745
我的解决办法很奇怪:
打开Source视图:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<uc1:Add ID="Add1" runat="server" />
</asp:Content>
在这里随便打一个回车再返回到view视图就可以了~~~
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<uc1:Add ID="Add1" runat="server" />
</asp:Content>
//注意区别:我上面多了两个空行
我查了一下国外的资料,还有一种方法是:
将aspx或master里面的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
换成
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
这种方法没有试过,大家可以试一下。
小记一下。但愿能给您带来帮助.
公司的一个自助平台项目
作者:admin 日期:2008-11-11
一个门户项目的总结
作者:admin 日期:2008-11-11
很出意外,因为是老顾客,没有去顾及到很多潜在的不稳定因素。项目在最后的时候居然出现了我们不想看到的问题。现在金融危机,客户可能确实受此影响~~~ 暂且抛开那些让人不开心不快乐的东西,还是总结一下这个项目的体会吧。
项目整体架构: 很基本很标准的三层架构,也就没有什么新意了。
页面设计:DIV+XHTML
开发平台:Asp.Net+C#+SQL2000
开发工具:VS2008+ Ms SQL+EditPlus
其它工具:
project2003 用来画WBS
StarUML 作UML图,项目架构设计,类设计
PowerDesign 数据库设计
visio 画项目中流程图,页面框架
因为现在很多服务器不支持Net Framework3.5或3.0,所以只能用VS2008来做VS2005的东西,很多Vs2008的新特性也就没有应用了。
功能需求:
功能需求
1,本程序主要功能包括:企业会员、商贸机会、产品展示、求职招聘、行业信息、商贸助手、全方位搜索;
2,强大的程序后台功能,包括网站基本信息、系统权限设置...企业管理,商机管理等等一应俱全;
3,产品及商机留言和查看功能;
4,强大的企业会员后台管理功能,能对企业自己发布的信息进行全面整体管理;
5,企业会员分为三个级别(试用会员、普通会员、VIP会员);
6,企业会员注册时可选择是否试用或直接注册VIP会员;
7,可设置普通或VIP收费及收费标准;
8,可设置企业会员是否注册开通;
9,可设置收费会员要求交费日期,超过此日期则提示会员服务到期;
10,可设置企业注册是否发送欢迎邮件;
11,可设置试用企业会员试用时间;
12,可设置直接申请VIP赠送天数;
13,企业会员注册登录全程提示功能;
14,总后台可对任意会员进行详细资料修改;
15,总后台可对任意会员进行会员类型修改;
16,会员到期续签功能;
17,后台企业密码恢复功能;
18,在线广告管理,支持广告位置、尺寸、价格设定,租售情况等查看
19,在线友情连接功能,支持在线申请及后台审核功能,支持图片、文字连接
项目总结:
1。每次商谈的结果都应该有项目会议记录,必须有实在的说明记录。我很在意这个东西,所以我每次以客户沟通的时候都会将重点记录下来。
2.尽量控制项目的进度,与客户方或需求方不断交流沟通,在项目开发过程中要让客户参与其中,可以较早地发现项目中需求的诉求差异,这点我觉得在此项目中做得很好,至少我们会不断征求客户方的意见。
3.定期汇报项目进度,让客户方心里有个底。我们这个也做到了,在每个周一或周期五都会定期跟客户方负责人进行项目汇报,虽则是远程汇报一个在南一个在北,但还是能让客户大致知晓项目的进度.
4.向客户方提供一些良好的建议,很可惜,我们一直在做这样的工作,希望能让项目能做得入流一点,并提供一些良好的例子给客户方,但客户方大多数没有听取我们的建议,我个人认为,这网站虽则在功能上也其它同类型的网站不相上下,但在栏目的设置上显得小气,不适合一个门户的设置。
5.做大项目要签合同,不能有丝毫的马虎.诚信很重要.双方都以此为基础展开合作,但有冲突的时候,诚信不能当饭吃。一方尽力做到自己的承诺,另一方因其它因素受滞于项目,这个时候就很为难了。你说讲交情还是不讲交情呢?讲情义,又如何结项呢?也许个人水平原因,这点做得不好。
6.要做计划,要控制项目的进度. 这个就不用我废话了。用一些项目管理工具来做就可以的吧。关键还是要看人去执行。
7.做得不好的是,没有做一模块与用户确认一块,看来我还是要下点功夫去学学敏捷开发模式吧
现在越多越多的人选择了在家里做soho,也越来越多的公司将项目外包.大项目个人认为还是需要面对面的沟通很重要,很多东西还是要有一定的流程,一定的规范才行。
一些截图:
页面截图:
visio的框架图:
wbs:
欢迎大家多多指教,共同进步。
项目整体架构: 很基本很标准的三层架构,也就没有什么新意了。
页面设计:DIV+XHTML
开发平台:Asp.Net+C#+SQL2000
开发工具:VS2008+ Ms SQL+EditPlus
其它工具:
project2003 用来画WBS
StarUML 作UML图,项目架构设计,类设计
PowerDesign 数据库设计
visio 画项目中流程图,页面框架
因为现在很多服务器不支持Net Framework3.5或3.0,所以只能用VS2008来做VS2005的东西,很多Vs2008的新特性也就没有应用了。
功能需求:
功能需求
1,本程序主要功能包括:企业会员、商贸机会、产品展示、求职招聘、行业信息、商贸助手、全方位搜索;
2,强大的程序后台功能,包括网站基本信息、系统权限设置...企业管理,商机管理等等一应俱全;
3,产品及商机留言和查看功能;
4,强大的企业会员后台管理功能,能对企业自己发布的信息进行全面整体管理;
5,企业会员分为三个级别(试用会员、普通会员、VIP会员);
6,企业会员注册时可选择是否试用或直接注册VIP会员;
7,可设置普通或VIP收费及收费标准;
8,可设置企业会员是否注册开通;
9,可设置收费会员要求交费日期,超过此日期则提示会员服务到期;
10,可设置企业注册是否发送欢迎邮件;
11,可设置试用企业会员试用时间;
12,可设置直接申请VIP赠送天数;
13,企业会员注册登录全程提示功能;
14,总后台可对任意会员进行详细资料修改;
15,总后台可对任意会员进行会员类型修改;
16,会员到期续签功能;
17,后台企业密码恢复功能;
18,在线广告管理,支持广告位置、尺寸、价格设定,租售情况等查看
19,在线友情连接功能,支持在线申请及后台审核功能,支持图片、文字连接
项目总结:
1。每次商谈的结果都应该有项目会议记录,必须有实在的说明记录。我很在意这个东西,所以我每次以客户沟通的时候都会将重点记录下来。
2.尽量控制项目的进度,与客户方或需求方不断交流沟通,在项目开发过程中要让客户参与其中,可以较早地发现项目中需求的诉求差异,这点我觉得在此项目中做得很好,至少我们会不断征求客户方的意见。
3.定期汇报项目进度,让客户方心里有个底。我们这个也做到了,在每个周一或周期五都会定期跟客户方负责人进行项目汇报,虽则是远程汇报一个在南一个在北,但还是能让客户大致知晓项目的进度.
4.向客户方提供一些良好的建议,很可惜,我们一直在做这样的工作,希望能让项目能做得入流一点,并提供一些良好的例子给客户方,但客户方大多数没有听取我们的建议,我个人认为,这网站虽则在功能上也其它同类型的网站不相上下,但在栏目的设置上显得小气,不适合一个门户的设置。
5.做大项目要签合同,不能有丝毫的马虎.诚信很重要.双方都以此为基础展开合作,但有冲突的时候,诚信不能当饭吃。一方尽力做到自己的承诺,另一方因其它因素受滞于项目,这个时候就很为难了。你说讲交情还是不讲交情呢?讲情义,又如何结项呢?也许个人水平原因,这点做得不好。
6.要做计划,要控制项目的进度. 这个就不用我废话了。用一些项目管理工具来做就可以的吧。关键还是要看人去执行。
7.做得不好的是,没有做一模块与用户确认一块,看来我还是要下点功夫去学学敏捷开发模式吧
现在越多越多的人选择了在家里做soho,也越来越多的公司将项目外包.大项目个人认为还是需要面对面的沟通很重要,很多东西还是要有一定的流程,一定的规范才行。
一些截图:
页面截图:
visio的框架图:
wbs:
欢迎大家多多指教,共同进步。
Web技术电子期刊2008年第10 11期(总第27期)
作者:admin 日期:2008-11-07
久违的感动--《山楂树之恋》有感
作者:admin 日期:2008-11-01
作 者: 艾米 著
出 版 社: 江苏文艺出版社
对有关爱情的小说,我已很长很长时间不去关注,不去寻找。因为对于爱情两字,似乎已经麻木,或有种可望不可及的感觉. 二年前,当我离开深圳不长时间在MSN上看见一位朋友的签名:时间会冲淡一切那一刻起,我总会故意或刻意让自己不再去想起那一段看似单纯恋爱经历或不再去想起某某人。二年后的今天,时间还是最好佐证.
去哪里寻找静秋和老三这样纯净的爱情呢?越来越现实的人们,越来越浮躁的社会。会存在这样的爱情吗??
泛性时代爱情唾手可得,但它很可能将爱简约成性,感官很可能替换了感情-马策
每个人的初恋都是刻骨铭心的,恋爱使人成长,恋爱也会带给人难以磨灭的人生印记。可人们往往都把初恋埋藏在心底的最深处,很少很少向人述说。我不太关注有多少男人能做到老三那样(我想还是很多的),也不想去深讨静秋是不是一个纯洁般的美女之类的。 初恋,往往就是书中所述的这般经历,这般感觉吧。在这个有点不把性当回事性药满天飞的年代,我们能得到这样的经历已经实属不易了。
如果真的爱一个人,那不是空虚般的口号,而应该是实实在在的做事。对于男的而言,应该是一种对对方的责任,让她能过得更好,过得更快乐。实在做不到的话,那就应该选择放手,让对方能找到让她更幸福的伴侣.
不是每个人都会把自己为她做的事情时常挂在嘴边,不是每个人的体贴都会让她能感受到他的用心良苦。有些时候双方的理解不一致往往会带来的结果是惨重的。每个人在恋爱中都会犯错,可每个人的结果都会不一样。能做到有些时候想起来确实残酷,所以现实中能做到的人,也就少之又少了。细微出真知,做事是一样,爱一个人更应该这样。
恋爱中对一个人的承诺很简单,可要真正去实现承诺,那需要极大的付出和极强的包容性。
文字朴素,感情挚真。感谢此书,让我找回一种很久以来曾有过的感动,也让我又想起了那段深藏心底深处的感情,当然,也给我带来的伤感。面对家人的焦虑,面对着朋友同事这么热情的为我婚烟考虑的时候,我总以“事业未立,何以成家”来搪塞,现在是不是也应该放开心怀,去寻找真正属于我的那一半呢?呵呵,现实的人们都说在追求简单的平凡的生活,可大家却往往忘记了最简单的生活也需要最极大的付出啊.