【问题标题】:C3P0: pool is already maxed outC3P0:池已满
【发布时间】:2020-08-13 00:51:51
【问题描述】:

谁能告诉我这是什么意思?我最近将几乎所有的代码都转换为 try-with-resources,这样清理连接的问题就不会那么严重了。我假设我已经用完了 C3P0 无需额外配置即可处理的连接数。这是一个主要是单线程的东西。这里还有另一个线程在工作,但我确实有代码在完成后关闭连接。我试图通过我的日志文件查找在 C3P0 达到最大值之前发生了 15 次的事情。现在我的程序似乎被挂起,并且没有为它做新的工作。

2020-04-28 14:17:12 [DEBUG] [main] - acquire test -- pool is already maxed out. [managed: 15; max: 15]
2020-04-28 14:17:12 [DEBUG] [main] - awaitAvailable(): com.mchange.v2.c3p0.impl.NewPooledConnection@c1997cd
2020-04-28 14:17:42 [DEBUG] [RepostWatcher] - acquire test -- pool is already maxed out. [managed: 15; max: 15]
2020-04-28 14:17:42 [DEBUG] [RepostWatcher] - awaitAvailable(): com.mchange.v2.c3p0.impl.NewPooledConnection@c1997cd

【问题讨论】:

    标签: java c3p0


    【解决方案1】:

    您可能正在泄漏连接,即没有可靠地确保每次打开连接时都关闭它们。每当您获得连接时,您都应该使用类似try with resources 的构造。如果您需要调试在您的代码库中打开了哪些可能尚未关闭的连接,请参阅文档here

    【讨论】:

    • 是的,我最终做了你建议的所有事情。由于程序有点小,我能够将我的所有代码转换为 try-with-resources 样式。我使用了一个临时表,发现我试图将这个表放到一个单独的连接中,所以在我发现它并稍微改变一下之后,我能够让它达到没有连接被阻止的地步。谢谢。
    猜你喜欢
    • 2017-10-16
    • 2017-06-06
    • 2012-09-29
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    相关资源
    最近更新 更多