问题标签 [connection-pooling]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
16 回答
209741 浏览

java - 使用 JDBC 的连接池选项:DBCP 与 C3P0

可用于 Java/JDBC 的最佳连接池库是什么?

我正在考虑 2 个主要候选人(免费/开源):

我在博客和其他论坛上阅读了很多关于它们的信息,但无法做出决定。

这两个有什么相关的替代品吗?

0 投票
5 回答
3907 浏览

sql-server - ADO.NET SQLServer:如何防止关闭的连接持有 S-DB 锁?

处理一个 SqlConnection 对象,但当然它并没有真正关闭。我需要关闭连接才能不锁定数据库对象。如何防止关闭的连接持有锁?


对上述句子的解释给不知道的人:

  • 当您关闭 ADO 或 ADO.NET 连接时,您实际上并没有切断与 SQL Server 的连接。ADO/ADO.NET 基础结构保持连接,以防您想再次使用它。连接一直在所谓的“连接池”中徘徊。

  • 几分钟不使用后,连接实际上会关闭。虽然,不是真的。TCP/IP 有它自己的方法来保持 TCP 连接打开几分钟(在“ CLOSE_WAIT ”状态)。这是在您要求再次打开到同一 IP:Port 的 TCP 连接时完成的。如果是这样,它可以使用已经打开的 TCP 连接。

  • 使用连接池和 SQL Server,仍会建立与 SQL Server 的连接。每个连接都有一个它所在的数据库上下文。只要一个连接位于该数据库中:它就持有该数据库上的共享数据库 (S-DB) 锁。

  • 共享数据库锁的意思很简单,“请不要在我在其中时删除此数据库。”

如何防止它在我的数据库上持有共享锁,同时保持连接池的好处?


我现在的临时解决方案是每次开发人员调用 Dispose:

将其更改为对全局辅助函数的调用:

它将数据库上下文更改为master

它解决了我眼前的问题;关闭的连接没有锁定我的数据库。

但现在我担心连接池会扰乱它的大脑——因为我在它背后切换了数据库上下文。


如果有人不知道或不知道:

SDK

CloseDispose在功能上是等效的。

0 投票
2 回答
2435 浏览

jdbc - Glassfish 应用服务器中的 JDBC 和连接池

我想在 EAR 部署中设置一个连接池和 JDBC 连接,因此我不必在我手动部署到的每个 App Server 上进行设置。我需要做什么?有没有我可以将这些信息放入的 .xml 文件?

0 投票
4 回答
1490 浏览

c# - 检测不可用的池化 SqlConnections

当我尝试使用sp_setapprole在 SqlConnection 上设置应用程序角色时,有时会在 Windows 事件日志中收到以下错误...

连接已被删除,因为打开它的主体随后假定了一个新的安全上下文,然后尝试在其模拟的安全上下文下重置连接。不支持此方案。请参阅联机丛书中的“模拟概述”。)

...并且在我的应用程序中引发了匹配的异常。

这些是池连接,并且曾经有一段时间连接池与应用程序角色不兼容 - 事实上,Microsoft 的旧建议是禁用连接池(!!) 但随着sp_unsetapprole的引入,现在(理论上)可以在将连接返回到池之前清理连接。

我相信这些错误发生在(出于未知原因)sp_unsetapprole 在关闭并返回到连接池之前未在连接上运行时。当这个连接从池中返回时,sp_approle 就注定会失败。

我可以捕获并处理此异常,但我更愿意检测即将发生的故障并完全避免异常(以及事件日志中的消息)。

是否可以在不引起异常的情况下检测到问题?

欢迎提出想法或建议。

0 投票
8 回答
2564 浏览

c# - 如何在异常发生之前检测到导致异常的情况?

我对这个问题没有运气,所以我制作了这个尽可能简单的测试用例来证明这个问题。

在下面的代码中,是否可以在尝试使用之前检测到连接不可用?

KABOOM 在 Windows 事件日志中显示为错误;

连接已被删除,因为打开它的主体随后假定了一个新的安全上下文,然后尝试在其模拟的安全上下文下重置连接。不支持此方案。请参阅联机丛书中的“模拟概述”。

...加上代码中的异常。

setAppRole 是一种在连接上设置应用程序角色的简单方法。它类似于这个...

在实际代码中,尝试在关闭连接之前使用sp_unsetapprole,但不能始终保证(继承的有缺陷的多线程应用程序)。无论如何,期望能够在引起爆炸之前检测到爆炸似乎仍然是合理的。

0 投票
3 回答
327 浏览

.net - 为什么连接池在不同的服务器上表现不同?

我们有一个程序读取输入流并将其写入数据库。没有用户输入。

该程序目前在开发服务器和生产服务器上并行运行,使用相同的数据作为输入,写入不同的输出服务器。

在开发服务器上一切都很好;一次打开大约 30 多个池连接并且运行愉快(这听起来可能很高,但我们为每个输入运行几个连续的、简短的查询,并且数据量很大)。在生产服务器上,它总是在 100 个连接时达到最大值,并且有时会引发异常,表明它已用完池中的可用连接。

是否存在某种可能导致这种差异的 SQL Server 设置?唯一的其他区别是生产服务器承受来自各种来源的额外负载。

我可以增加池中的连接数(虽然我不知道有多少会满足它),但我想了解是什么原因造成的。

0 投票
2 回答
372 浏览

java - 使用 Java 数据源是一项代价高昂的考验吗?

我的 Java(非 Web)应用程序可能必须创建大约 200 个不同数据源的连接池。是的,所有 200 个都连接到不同的数据库。池中没有200 个连接。

以下是一些困扰我的问题..

1) 我应该预见到主要的(性能等)问题吗?

2) 是否有任何可用的非商业 Java 工具可用。

3)我试图搜索网络,但并没有真正找到一个直接的答案。有没有人在这方面有指向网络上一些好的资源的链接?

提前致谢

0 投票
2 回答
26999 浏览

sql - sp_reset_connection 有什么作用?

sp_reset_connection 似乎由 SQL Server 连接池调用,以确保从池中重用的连接的大部分设置都被重置。有谁确切地知道它做什么和不做什么?

例如,我从这篇文章中看到它不会重置事务隔离级别

0 投票
3 回答
4561 浏览

java - Proxool 最大连接数

我正在使用proxool java 连接池(版本 0.9.1)。一切正常,直到我达到最大连接数。如果达到最大连接数 proxool 立即抛出SQLExcepion

当然,n显示的不是最大连接数。

为什么 proxoolSQLException立即抛出而不是等待可用连接?当然不是永远,但可配置的超时会很棒。

我不知道它是否重要,但我在 Tomcat J2EE 应用程序中使用 proxool。proxool 的参数在中定义,context.xml我正在使用Proxool DataSource Support

0 投票
2 回答
3793 浏览

asp.net - 数据库连接池大小合理限制?

我们的网络应用程序到我们的数据库的池大小设置为 600 个连接。然而,我刚刚收到一封来自客户的电子邮件,说他们正在向 4000 多名用户推送我们的培训课程,告诉他们应该在本月 27 日之前完成。我应该把它提高到4000吗?