Tag: 连接池

在“卸载”方法中关闭连接

我inheritance了一个Web框架,以前的开发人员在页面生命周期的init / unload方法中打开并关闭了他的数据库连接。 基本上构造函数是这样的(简化以certificate这一点); public class BasePage { protected DBConnection _conn; public BasePage() { Init += StartConnection; Unload += EndConnection; } private void StartConnection(object sender, EventArgs e) { _conn = new DBConnection(Application[“connectionstring”].ToString()); } private void EndConnection(object sender, EventArgs e) { if (_conn == null) return; if (_conn.Connection.State == ConnectionState.Open) { _conn.Close(); _conn.Dispose(); } } } […]

使用multithreading服务的数据库连接池

我有一个.NET 4 C#服务,它使用TPL库进行线程化。 我们最近将其切换为也使用连接池,因为一个连接正在成为处理的瓶颈。 以前,我们使用lock子句来控制连接对象的线程安全性。 当工作备份时,队列将作为任务存在,并且许multithreading(任务)将等待lock子句。 现在,在大多数情况下,线程会更快地等待数据库IO和工作进程。 但是,现在我正在使用连接池,我们遇到了一个新问题。 达到最大连接数(默认值为100)后,如果请求进一步连接,则会超时(请参阅池信息 )。 发生这种情况时,会抛出一个exception,说“连接请求超时”。 我的所有IDisposable都在using语句中,我正在管理我的连接。 这种情况的发生是由于请求的工作量超过了池可以处理的工作量(这是预期的)。 我理解为什么会抛出这个exception,并且我知道处理它的方法。 简单的重试感觉就像一个黑客。 我也意识到我可以通过连接字符串增加超时时间,但这不是一个可靠的解决方案。 在以前的设计中(没有池),工作项将因应用程序内的锁定而处理。 处理此方案以确保处理所有工作的好方法是什么?

什么是sql连接字符串中“最大池大小”的最大允许值

连接字符串中“最大池大小”的最大允许值是多少? 假设这是app.config中的连接字符串 我可以使用的最大值是1024而不是1024? 记住它是最大值,而不是默认值。

SQL SERVER中的连接池(快速) – 建议的数量?

是否有一个建议的连接数来自我用于连接池的每个应用程序..,我的应用程序使用asp.net和c#对抗“同一”服务器上的sql express。 我有5个应用程序正在运行,它们没有被密集使用,所有连接都被打开和关闭.. 所以我想把每个应用设置为min pool = 5 所以这5 x 5 = 25 可以sql表达处理25连接…实际上5个池和每个池5个连接? 我可以上十点吗? 是否有必要将MAX池属性放在连接字符串中以确保我不会超过每个池的数字? 任何帮助真正得到了帮助

.NET / SQL Server中的连接池?

在使用SQL Server数据库在.NET中开发应用程序时,编写自定义连接池代码是否必要或有利? 我知道ADO.NET为您提供了启用/禁用连接池的选项 – 这是否意味着它已内置到框架中而我不需要担心它? 为什么人们谈论编写自己的连接池软件?这与ADO.NET中内置的有何不同?

HTTP连接池是否可行?

对于与一组有限的其他服务器联系的C#webservice,我希望为每个服务器创建一个我希望能够联系的HTTP连接池。 课程的基本概念: 每个池应该打开几个连接(3个连接?)到它的远程网络服务器,并保持这些连接活着。 应该使用最长生命周期来回收(断开/重新连接)与远程Web服务器的连接,防止远程Web服务器在我们之前断开连接。 不应同时创建连接,而是在3个连接之间稍微停顿,因此回收也不会同时发生。 如果远程Web服务器仍然意外断开连接,应该注意它,我们应该重新连接。 如果由于某种原因无法重新连接,则应在稍微暂停后重试。 这样,当我想发送HttpWebRequest时,我就有了现成的连接,在我想要使用它的时候节省了建立连接的时间。 目前我不知道这是否是HttpWebRequest的默认function。 很抱歉,如果我要求显而易见的话。 谷歌搜索这只导致我对Java的类似问题。 问题1:.NET / c#中是否存在这样的问题? 问题2:如果没有,你知道吗?互联网上是否有关于此礼物的资源? 问题3:如果没有,如何自己建设一个?

.NET SqlConnection类,连接池和重新连接逻辑

我们有一些客户端代码,它使用.NET中的SqlConnection类与SQLServer数据库通信。 它会间歇性地失败并出现此错误: “ExecuteReader需要一个开放且可用的连接。连接的当前状态为Closed” “临时”解决方案是重新启动过程,之后一切正常 – 但是,这显然不能令人满意。 代码保留了SqlConnection实例的缓存,每个数据库一个。 我们想重新编写代码,但在此之前,我需要了解一些事情: 我的第一个问题是:重复连接和断开SqlConnection对象是否效率低下,或者底层库是否代表我们执行连接池? // Is this bad/inefficient? for(many-times) { using(SQLConnection conn = new SQLConnection(connectionString)) { // do stuff with conn } } 因为我们的代码没有执行上述操作,所以问题的可能原因似乎是在连接的“生命周期”期间底层SQLServer数据库发生了某些事情,导致连接被关闭… 如果事实certificate“缓存”SqlConnection对象是值得的,那么处理所有可以简单地通过“重新连接”到数据库来解决的错误的建议方法是什么。 我在谈论的场景如下: 数据库脱机并重新联机,但客户端进程在发生这种情况时没有打开的事务 数据库“断开连接”,然后“重新连接” 我注意到SqlConnection上有一个“State”属性…是否有适当的方法来查询? 最后,我有一个测试SQLServer实例设置了完全访问权限:我怎样才能再现确切的错误“ExecuteReader需要一个开放的可用连接。连接的当前状态是关闭的”

.net连接池

我不明白常规连接和连接池之间的语法区别是什么。 当我使用using键时,例如: using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); command.ExecuteNonQuery(); } 这是执行连接池的方法吗?