问题标签 [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.
asp.net - 如何检测 ASP.net 应用程序中的 SqlServer 连接泄漏?
我目前正在对 ASP.net 2.0 应用程序进行一些 GUI 测试。RDBMS 是 SQL Server 2005。主机是 Win Server 2003 / IIS 6.0。
我没有应用程序的源代码,因为它是由没有发布代码的外部公司编写的。
我注意到当我重新启动 IIS 时应用程序运行良好,但经过一些测试,在我打开和关闭浏览器几个小时后,应用程序开始变得越来越慢。我想知道这种行为是否是由于程序员关闭连接的错误做法造成的:我怀疑这里的数据库存在开放连接泄漏。
我猜.Net 垃圾收集器最终会关闭它们,但是......这可能需要一段时间,不是吗?
我有 SQL Server Management Studio,我确实从活动监视器中注意到在数据库上打开了很多连接。
综上所述,这里有一些与主要问题相关的问题:
在 SQL Server 2005 中有什么方法可以知道连接是因为等待在连接池中使用而打开的,还是因为它们被应用程序使用而打开的?
有人知道好的在线/纸质资源,我可以在其中学习如何使用性能计数器或其他类型的工具来帮助追踪这类问题吗?
如果性能计数器是最好的解决方案,我应该注意哪些变量?
asp.net - 使用 SqlDataSource 或 ObjectDataSource 时如何关闭连接/数据读取器
在 beta 测试期间,我们发现了连接池错误消息。因此,我一直在浏览代码并关闭未关闭的 SqlDataReader 对象。我需要知道的是如何关闭在 SqlDataSource 或 ObjectDataSource 标记的 SelectStatement 属性中指定的数据读取器(或者是否需要关闭)。如果不处理,会不会有连接泄漏?
提前致谢 !
java - hsqldb 中的连接池
在不影响速度的情况下,在 hsqldb 中实现连接池的最佳方法是什么?
rdbms - 你如何设置你的连接池?
在以下方面设置游泳池的最佳方法是什么: -
- 你什么时候创建连接?
- 你什么时候关闭连接,你会关闭所有连接吗?
- 你测试连接还是不错的。何时以及如何?
- 您如何确定最大连接数的好数字?
- 你有什么样的监控来确保池的用户表现良好?你能阻止一段糟糕的代码带走所有东西吗?
- 您是否编写了自己的池,或使用了第三方库?
我相信这是一个不可知论的问题,但欢迎对特定数据库/语言的“功能”发表评论。例如,在某些数据库上连接可能比其他数据库更慢或更昂贵。
澄清一下,我不打算从头开始编写一个池,这个问题更多的是关于如何配置一个现有的池化库。
java - 在 dbcp 中使用 PreparedStatement 池
有人能解释一下如何使用 dbcp 准备的连接池吗?(如果可能,请提供一些示例代码)。我已经想出了如何打开它——将 KeyedObjectPoolFactory 传递给 PoolableConnectionFactory。但是具体的prepared statements应该如何定义呢?现在我只使用 PoolingDataSource 从池中获取连接。如何使用池中准备好的语句?
java - 处理方法:通讯链路故障
我们正在使用 Spring 2.5.4/Hibernate 3.2/Websphere Application Server 6.1.0.17。我们已经在 AIX 机器上部署了应用程序。第二天当我进来时,我尝试登录应用程序。我在页面上得到这个异常:
Error 500: Request processing failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: could not execute query; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query
我检查了System.Out日志并查看更多详细信息。(使用 pastebin 是因为日志格式真的搞砸了页面布局)
导致我们异常的代码行是:
我们在 Spring 的 applicationContext.xml 中连接连接。我们知道 AS400 上的连接有时会断开(他们可能会在一夜之间重新启动系统——我不确定)。但是,当我们在 applicationContext 中连接所有内容时,我们最好不要打开新连接。
无论使用 DataSource/JNDI 或 JDBC,都会出现此问题
有谁知道要添加到 Spring 或 Hibernate 以检查连接是否过时,如果是,删除它并创建一个新的设置?或任何其他想法来解决这个问题?如果您需要更多信息/代码,请告诉我。
非常感激,
克里斯
更新:
查看了 Spring 社区论坛上的一些帖子,我已经使用 commons-dbcp 实现了我的 DataSource,它具有一些属性,如“testWhileIdle”和“validationQuery”。我将让应用程序运行并在上午再次检查它。将发布结果的更新。
更新#2:
使用 dbcp-commons BasicDataSource 似乎可以纠正这个问题,这似乎是一个网络问题。Websphere 具有池连接,如果 AS400 端出现网络问题,它会尝试使用它拥有的连接,但它不知道该连接是否“陈旧”。使用具有时间间隔的validationQuery 是解决此问题的一种廉价(但有效)的方法——但在Websphere 端,在配置下可能有更好的方法。但是,最好不要改变没有破坏的东西,所以在这失败之前,这可能是我们前进的解决方案。
java - 如何在 java、MySQL 和 Tomcat 6 中使用连接池
如何在 Java+MySQL+Tomcat 6 中使用连接池?
我已经阅读了这篇文章http://dev.mysql.com/tech-resources/articles/connection_pooling_with_connectorj.html但对我来说仍然不太清楚。
我在哪里使用连接器/J?我把它放在一个静态变量中吗?我使用 SessionListener 吗?它需要任何配置吗?
先感谢您!
multithreading - 使用多线程和连接池时避免连接超时
我将只读数据库操作分成多个块,(每个块读取大量数据的子集,对其进行分析并将结果写入磁盘文件)。
每个块在新的 .net 线程(使用委托和 BeginInvoke)上执行 Select(到数据表中)
数据的子集比池中的可用连接多,所以当我用完连接时,在第一个释放之前,后续的连接请求排队...直到连接超时到期,然后我得到超时异常。
我该怎么做,A)当池中的连接都在使用时抑制超时连接异常,或者 B)在我什至请求另一个连接之前检测到它们都在使用,所以我可以等到一个可用时再询问?
python - Mysql连接池问题:值得吗?
我记得听说 mysql 中的连接过程与其他 RDBMS 相比设计得非常快,因此如果启用连接池,使用提供连接池 (SQLAlchemy) 的库实际上对您没有太大帮助。
有人对这个有经验么?
我对启用它持怀疑态度,因为如果某些代码对数据库连接执行有状态的操作并且(可能是错误地)没有自行清理,那么通常会在关闭连接时清理的状态将改为传播到获得回收连接的后续代码。
sql-server - 连接池会话设置
我有一个小而重要的查询。我将给出一个类似但简化的用例,但它确实涵盖了我的问题。
让用户 A 连接到 SQL Server 2000 数据库并从池中获得一个连接。
用户 A 设置日期格式 DMY。完成并且连接被释放回池。
用户 B 出现,使用相同的字符串连接并从池中获取相同的连接,设置日期格式 MDY,完成并返回连接。
用户 A 重新连接并获得相同的连接,日期格式是什么?
是否在返回池时重新初始化?连接是否保留那里的设置?当连接从池中删除时,新连接的初始设置在哪里?