没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
全文可编辑 word 文档 页眉与背景水印可删除
1
.NET 连接池的问题详解
NET 连接池救生员
防止可淹没应用程序的池溢出
William Vaughn
大多数 ADO.NET 数据提供程序使用连接池,以提高围绕
Microsoft 断开连接的 .NET 结构构建的应用程序的性能。应
用程序首先打开一个连接(或从连接池获得一个连接句柄),
接着运行一个或多个查询,然后处理行集,最后将连接释放
回连接池。如果没有连接池,这些应用程序将花费许多额外
时间来打开和关闭连接。
当您使用 ADO.NET 连接池来管理基于 Web 的应用程序
和客户端/服务器 Web 服务应用程序的连接时,您的客户通
常会获得更快的连接和更好的总体性能。但是,当您的应用
程序或 Web 站点上突然涌入了同时希望进行连接的大量客
户时,会发生什么事情呢?您的应用程序会“沉没”,还是
会“游泳”?就像救生员一样,您需要仔细监视连接池,以
维护它的良好性能,并防止连接池发生溢出。我们首先探讨
连接池可能溢出的原因,然后讨论如何编写代码或使用
Windows 性能监视器来监视连接池。
正如我于 2003 年 5 月发表的 “Swimming in the .NET
全文可编辑 word 文档 页眉与背景水印可删除
2
Connection Pool” (InstantDoc ID 38356) 一文中讨论的那
样,当您使用连接池时,您需要知道许多有关可伸缩性和性
能的详细信息。请记住,您需要监视和管理两个基本因素:
每个池管理的连接数和连接池的数量。在一个有效的生产系
统中,池的数量通常很少(1 到 10),而且,使用中的连接
的总数也很少(少于 12 )有效的查询只用不到一秒钟的时
间就可以完成,并断开连接。因此,即使有数百个客户同时
访问您的 Web 站点,相对较少的几个连接常常足以处理整个
负载。为了使您的应用程序有效地运行,您必须使连接资源
处于自己的控制之下,并要监视池的状态,这样,在监视池
发生溢出以及您的客户开始抱怨(或离开您的网站)之前您
会收到某种警告。
为什么会发生连接池溢出?
GPS 平台、网站建设、软件开发、系统运维,找森大网
络科技!
参加电子邮件讨论组的人常常抱怨应用程序是如何在
测试中是“龙”而在形成为产品时就变成了“虫”的。有时,
他们会报告说,当连接了大约 100 个客户端时,应用程序会
停止或挂起。请记住,一个池中的默认连接数是 100。如果
您尝试从池中打开 100 个以上的连接,ADO.NET 会使应用程
序的连接请求排队等候,直到有空闲的连接。应用程序(及
其用户)将这种情况视为进入 Web 页的延迟或视为应用程序
全文可编辑 word 文档 页眉与背景水印可删除
3
死锁。让我们首先讨论一下这个问题是如何产生的。
在 ADO.NET 中,SqlClient .NET 数据提供程序为您提
供了两种打开和管理连接的方法。首先,当您需要手工管理
连接时,可以使用 DataReader 对象。利用这种方法,您的
代 码 将 构 造 一 个 SqlConnection 对 象 , 设 置
ConnectionString 属性,然后使用 Open 方法来打开连接。
当代码完成 DataReader 后,您要在 SqlConnection 对象停
止作用之前关闭 SqlConnection。要处理行集,您可以将
DataReader 传递到应用程序中的另一个例程,但仍然需要确
保 DataReader 及其连接处于关闭状态。如果您不关闭
SqlConnection,代码会“泄漏”每个操作的连接,于是连
接池对连接进行累积,最后便发生溢出。与 ADO 和 Visual
Basic (VB) 6.0 中的情况不同,.NET 垃圾回收器不会为您
关闭 SqlConnection 并进行清理。我稍后要讨论的 清单 1
显示了如何打开连接和生成 DataReader 以从一个简单的查
询返回行集,来向连接池施加压力的。
您 也 可 能 在 使 用 DataAdapter 对 象 时 遇 到 问 题 。
DataAdapter Fill 和 Update 方法可自动打开 DataAdapter
对象的连接,并在数据 I/O 操作完成后关闭该连接。不过,
如果该连接在执行 Fill 或 Update 方法时已经处于打开状
态 , 那 么 , ADO.NET 在 方 法 执 行 完 以 后 不 会 关 闭
SqlConnection。这是另一个发生连接“泄漏”的机会。
剩余12页未读,继续阅读
资源评论
mmoo_python
- 粉丝: 0
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功