c3p0中的资源无法检出的原因是什么?

2024-01-11

因此,我正在研究 c3p0 API 来调试我们的一个生产问题,该问题导致在检查连接时出现堆栈溢出错误。

我发现下面的评论BasicResourcePool班级的checkoutResource method:

    /*
 * This function recursively calls itself... under nonpathological
 * situations, it shouldn't be a problem, but if resources can never
 * successfully check out for some reason, we might blow the stack...
 *
 * by the semantics of wait(), a timeout of zero means forever.
 */

我想知道该池中的资源永远无法成功检出的原因可能是什么。

答案可能会帮助我调查我的应用程序中可能出现的问题。


因此,尽管这是一个合理的猜测,但仅仅池耗尽(如果泄漏或忘记 close() 连接会发生什么)不会导致堆栈溢出。

堆栈溢出发生在以下情况checkoutResource(...)

  1. 找到一个可供签出的连接,并“初步”签出它;然后
  2. 出了问题,说明初步签出的Connection不可用;所以
  3. 该函数“回到井中”,递归地调用自身以使用新的连接再次尝试

谜团在于“出了问题”部分。实际上有两件事可能会出错:

  1. (最有可能!)你有testConnectionOnCheckout set to true并且所有连接都未通过连接测试
  2. 连接碰巧被删除(例如因超过而过期maxIdleTime or maxConnectionAge)在结帐过程中从池中取出

如果您看到此情况,首先要检查的是您的连接或连接测试机制是否存在问题。尝试...

  1. Log com.mchange.v2.resourcepool.BasicResourcePool at DEBUG or FINE并查找指示无法结帐的异常。你可以 grep 查找A resource could not be refurbished for checkout.或者,开关连接测试制度 http://www.mchange.com/projects/c3p0/#simple_advice_on_connection_testing测试空闲连接和连接签入而不是签出,并以一种可能不那么破坏性的方式观察问题的出现。
  2. 如果你正在做一些会迫使池真正搅动连接的事情,设置非常短的超时或其他什么,可以想象竞争条件会很严重。检查您的价值观配置属性 http://www.mchange.com/projects/c3p0/#configuration_properties maxConnectionAge, maxIdleTime, and maxIdleTimeExcessConnections并确保它们合理或未设置(即保留合理的默认值)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c3p0中的资源无法检出的原因是什么? 的相关文章

随机推荐

  • 一个 UITableView 中有多个 UITableViewCell 类?

    我正在组合一个 TableView 并且需要在同一个表中使用多个单元格类 例如 我将如何在我的cellForRowAtIndexPath method UITableViewCell tableView UITableView tableV
  • 查询构建器中不存在 Get onlyTrashed()

    我正在尝试从表消息中获取废弃的行 public function trash return this gt onlyTrashed gt where user id this gt u gt orWhere receiver this gt
  • 在 iOS 模拟器中启动 Flutter 应用程序时出错

    我在 iOS 模拟器上启动 Flutter 应用程序时遇到问题 从下面的错误输出来看 这个问题似乎与本地主机连接等有关 但我无法找到如何修复它 我正在运行 MacOS Catalina 版本 10 15 6 19G73 iOS模拟器版本11
  • 编写调用Fortran库的R包

    我正在尝试编写一个调用 Fortran 子例程的 R 包 我正在使用 Rstudio 包模板自动创建一堆文件和目录 In R 我有一个文件 Fpi R Fpi lt function DARTS ROUNDS if is loaded Fp
  • 在 Android 中启动新的 Activity 并完成当前的 Activity? [复制]

    这个问题在这里已经有答案了 目前我正在开始一个新的Activity并打电话finish在当前的一个上 是否有任何标志可以传递给Intent这使得完成电流Activity无需致电finish手动从代码 您可以使用finish 方法或者您可以使
  • 为什么通过引用捕获变量的 lambda 不能转换为函数指针?

    如果我有一个通过引用捕获所有自动变量的 lambda 为什么不能转换为函数指针呢 常规函数可以像通过引用捕获所有内容的 lambda 一样修改变量 那么为什么不一样呢 换句话说 我想 lambda 和 a 之间的功能区别是什么 捕获列表和常
  • 使用 Laravel 进行 Flutter FCM

    我正在使用 Laravel 作为我的应用程序后端 并希望按主题向我的 flutter 应用程序发送推送通知 现在我在我的 flutter 应用程序中实现了 firebase 消息传递 作为 registerOnFirebase fireba
  • 立即运行 Jenkins 作业

    我有一个非常轻量级的作业 应该在触发时立即执行 而不是等待一个小时才能完成当前作业 据我了解 一个蝇量级任务就是我想要的 它将创建一个临时执行器 专门用于该任务 我怎样才能让一个工作作为蝇量级运行 我最近也遇到了同样的问题 我的公司有很多
  • 我应该如何折叠 Python 中的元素? [复制]

    这个问题在这里已经有答案了 例如 l a 1 b 2 a 2 collapsed l dict a 1 2 b 2 如何最好地从l to collapsed l 从某种意义上说 我想要某种方式来概括我正在崩溃的 领域 以及哪个领域 我认为这
  • eslint 禁用扩展覆盖

    如果你有一个覆盖 你想 降级 js解析器 你如何关闭extends来自父母 parserOptions很容易被覆盖 因为它是基于密钥的 extends因为空数组不执行任何操作 因为它尝试将空列表附加到原始数组 如果您将其设置为null 您会
  • Zend Framework notEmpty 验证器 setRequired

    我看过其他的问题 https stackoverflow com questions 3871460 zend form setrequiredtrue or addvalidatornotempty 谷歌搜索这个 我的问题是 当我提交带有
  • std::variant 在 MSVC 和 gcc 中的行为不同

    Update 这是一个 C 标准缺陷 已在 C 20 P0608R3 中修复 另外 VS 2019 16 10 修复了这个错误 std c 20 MSVC 19 28 拒绝以下代码 但 gcc 10 2 接受它并输出true false i
  • 如何以编程方式为 UINavigationController 子类化 UINavigationBar?

    我正在使用自定义的drawRect函数来绘制UINavigationBar在我的 iOS4 应用程序中 它不使用图像 仅使用 CoreGraphics 因为你不能在中实现drawRectUINavigationBariOS5 中的类别 Ap
  • JavaScript 唯一浏览器 ID

    有没有办法在javascript中为浏览器创建一个唯一的ID 我说的不是每次生成时都是随机的 ID 而是生成该 ID 的浏览器所特有的 ID 而且还考虑了运行该 ID 的计算机 Example Windows 7 Chrome 可能会生成
  • Ionic Zip 仅提取特定文件夹

    我有一个案例 我需要使用 C Ionic zip 库提取 Zip 文件 Zip 文件包含多个文件夹 我想提取特定文件夹并将其复制到特定目的地 例如名为 abc zip 的 Zip 文件和目录结构如下 父目录 gt 子目录1 gt 文件a 文
  • 从文档大纲(书签)中获取页码

    我正在使用 itext7 库来操作一些现有的 PDF 由于某种原因 我无法从大纲中获取页码 我想我应该以某种方式从Pdf目的地 http itextsupport com apidocs itext7 latest com itextpdf
  • 每天都会对 Java 8 Stream API 中的实体进行惰性排序吗?

    我有一个很大的 Java 8 Stream Stream
  • 字符串的哈希函数

    我正在用 C 语言研究哈希表 并且正在测试字符串的哈希函数 我尝试的第一个功能是添加 ascii 代码并使用模 100 但我的第一次数据测试结果很差 130 个单词有 40 次碰撞 最终输入数据将包含 8000 个单词 它是存储在文件中的字
  • 如何显示R中两个日期之间发生的事件

    我的问题看起来很简单 我希望如此 我有一个数据框 其中包含疾病诊断日期 指示患者服用哪种药物 或暴露和未暴露组 的二元变量 药物的开始和停止日期以及总体停止日期 ID Diag date Treatment End date Drug st
  • c3p0中的资源无法检出的原因是什么?

    因此 我正在研究 c3p0 API 来调试我们的一个生产问题 该问题导致在检查连接时出现堆栈溢出错误 我发现下面的评论BasicResourcePool班级的checkoutResource method This function rec