问题标签 [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.
java - 使用 JDBC 的连接池选项:DBCP 与 C3P0
可用于 Java/JDBC 的最佳连接池库是什么?
我正在考虑 2 个主要候选人(免费/开源):
- Apache DBCP - http://commons.apache.org/dbcp/
- C3P0 - http://sourceforge.net/projects/c3p0
我在博客和其他论坛上阅读了很多关于它们的信息,但无法做出决定。
这两个有什么相关的替代品吗?
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:
Close和Dispose在功能上是等效的。
jdbc - Glassfish 应用服务器中的 JDBC 和连接池
我想在 EAR 部署中设置一个连接池和 JDBC 连接,因此我不必在我手动部署到的每个 App Server 上进行设置。我需要做什么?有没有我可以将这些信息放入的 .xml 文件?
c# - 检测不可用的池化 SqlConnections
当我尝试使用sp_setapprole在 SqlConnection 上设置应用程序角色时,有时会在 Windows 事件日志中收到以下错误...
连接已被删除,因为打开它的主体随后假定了一个新的安全上下文,然后尝试在其模拟的安全上下文下重置连接。不支持此方案。请参阅联机丛书中的“模拟概述”。)
...并且在我的应用程序中引发了匹配的异常。
这些是池连接,并且曾经有一段时间连接池与应用程序角色不兼容 - 事实上,Microsoft 的旧建议是禁用连接池(!!) 但随着sp_unsetapprole的引入,现在(理论上)可以在将连接返回到池之前清理连接。
我相信这些错误发生在(出于未知原因)sp_unsetapprole 在关闭并返回到连接池之前未在连接上运行时。当这个连接从池中返回时,sp_approle 就注定会失败。
我可以捕获并处理此异常,但我更愿意检测即将发生的故障并完全避免异常(以及事件日志中的消息)。
是否可以在不引起异常的情况下检测到问题?
欢迎提出想法或建议。
c# - 如何在异常发生之前检测到导致异常的情况?
我对这个问题没有运气,所以我制作了这个尽可能简单的测试用例来证明这个问题。
在下面的代码中,是否可以在尝试使用之前检测到连接不可用?
KABOOM 在 Windows 事件日志中显示为错误;
连接已被删除,因为打开它的主体随后假定了一个新的安全上下文,然后尝试在其模拟的安全上下文下重置连接。不支持此方案。请参阅联机丛书中的“模拟概述”。
...加上代码中的异常。
setAppRole 是一种在连接上设置应用程序角色的简单方法。它类似于这个...
在实际代码中,尝试在关闭连接之前使用sp_unsetapprole,但不能始终保证(继承的有缺陷的多线程应用程序)。无论如何,期望能够在引起爆炸之前检测到爆炸似乎仍然是合理的。
.net - 为什么连接池在不同的服务器上表现不同?
我们有一个程序读取输入流并将其写入数据库。没有用户输入。
该程序目前在开发服务器和生产服务器上并行运行,使用相同的数据作为输入,写入不同的输出服务器。
在开发服务器上一切都很好;一次打开大约 30 多个池连接并且运行愉快(这听起来可能很高,但我们为每个输入运行几个连续的、简短的查询,并且数据量很大)。在生产服务器上,它总是在 100 个连接时达到最大值,并且有时会引发异常,表明它已用完池中的可用连接。
是否存在某种可能导致这种差异的 SQL Server 设置?唯一的其他区别是生产服务器承受来自各种来源的额外负载。
我可以增加池中的连接数(虽然我不知道有多少会满足它),但我想了解是什么原因造成的。
java - 使用 Java 数据源是一项代价高昂的考验吗?
我的 Java(非 Web)应用程序可能必须创建大约 200 个不同数据源的连接池。是的,所有 200 个都连接到不同的数据库。池中没有200 个连接。
以下是一些困扰我的问题..
1) 我应该预见到主要的(性能等)问题吗?
2) 是否有任何可用的非商业 Java 工具可用。
3)我试图搜索网络,但并没有真正找到一个直接的答案。有没有人在这方面有指向网络上一些好的资源的链接?
提前致谢
sql - sp_reset_connection 有什么作用?
sp_reset_connection 似乎由 SQL Server 连接池调用,以确保从池中重用的连接的大部分设置都被重置。有谁确切地知道它做什么和不做什么?
例如,我从这篇文章中看到它不会重置事务隔离级别
java - Proxool 最大连接数
我正在使用proxool java 连接池(版本 0.9.1)。一切正常,直到我达到最大连接数。如果达到最大连接数 proxool 立即抛出SQLExcepion
:
当然,n
显示的不是最大连接数。
为什么 proxoolSQLException
立即抛出而不是等待可用连接?当然不是永远,但可配置的超时会很棒。
我不知道它是否重要,但我在 Tomcat J2EE 应用程序中使用 proxool。proxool 的参数在中定义,context.xml
我正在使用Proxool DataSource Support。
asp.net - 数据库连接池大小合理限制?
我们的网络应用程序到我们的数据库的池大小设置为 600 个连接。然而,我刚刚收到一封来自客户的电子邮件,说他们正在向 4000 多名用户推送我们的培训课程,告诉他们应该在本月 27 日之前完成。我应该把它提高到4000吗?