当前位置: 首页 > 知识库问答 >
问题:

C3P0连接池在此配置下给出连接超时错误

裘嘉树
2023-03-14

我正在使用resin服务器+spring框架和c3p0连接池。我已经使用以下属性文件配置了连接池。但不知怎的,每隔24小时左右,我的网站就会出现连接超时错误,然后我不得不重新启动我的resin服务器,让网站重新运行。请告诉我在下面的配置文件中有什么错误,以及我在这里缺少了什么。

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.databaseURL=jdbc:mysql://localhost/my_database1_url
jdbc.StockDatabaseURL=jdbc:mysql://localhost/my_database2_url
jdbc.username=my_username
jdbc.password=my_password
jdbc.acquireIncrement=10
jdbc.minPoolSize=20
jdbc.maxPoolSize=30
jdbc.maxStockPoolSize=30
jdbc.maxStatements=100
jdbc.numOfHelperThreads=6
jdbc.testConnectionOnCheckout=true
jdbc.testConnectionOnCheckin=true
jdbc.idleConnectionTestPeriod=30
jdbc.prefferedTestQuery=select curdate();
jdbc.maxIdleTime=7200
jdbc.maxIdleTimeExcessConnections=5

共有1个答案

狄宗清
2023-03-14

所以,一堆事情。

>

  • C3P0具有用于观察和调试连接泄漏的内置设施。请设置配置参数 <罢工> UnusedConnectionTimeout UnReturdConnectionTimeout和DebugunReturdConnectionStackTraces。设置UnreturndConnectionTimeout来定义一段时间,在这段时间之后,c3p0应假定连接已泄漏,并关闭它。设置DebugunReturdConnectionStackTraces以要求c3p0记录签出未正确签入的连接的堆栈跟踪。请参见配置以调试和解决损坏的客户端应用程序
  • 您正在以非标准方式配置c3p0。这可能是好的,也可能不是,但是您希望验证您打算设置的配置是否是c3p0获得的配置。c3p0数据源在池初始化信息处转储其配置。请考虑检查以确保您得到了您想要的配置。或者,您可以通过JMX检查数据源的运行时配置。
  • 除了不标准的配置方式外,您的几个配置属性似乎也有问题。PreferedTestQuery应为PreferedTestQueryNumOfHelperThreads应为NumHelperThreads
  • 以下根本不是c3p0配置名。也许您在内部将它们映射到c3p0配置,但您需要验证这一点。下面是not-c3p0-property-names:

    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.databaseURL=jdbc:mysql://localhost/my_database1_url
    jdbc.StockDatabaseURL=jdbc:mysql://localhost/my_database2_url
    jdbc.username=my_username
    jdbc.maxStockPoolSize=30
    

    在标准C3P0.properties表单中,您的意思可能是

    c3p0.driverClass=com.mysql.jdbc.Driver
    c3p0.jdbcURL=jdbc:mysql://localhost/my_database1_url
    # no equivalent -- jdbc.StockDatabaseURL=jdbc:mysql://localhost/my_database2_url
    c3p0.user=my_username
    # no equivalent -- jdbc.maxStockPoolSize=30
    

    注意:我喜欢看到@nisay检查连接泄漏的方式,因为我喜欢看到人们使用更高级的c3p0 API。只要不热更新数据源的配置,它就能工作。但是您不需要那么麻烦,也不能保证这种方法在以后的版本中继续有效c3p0没有对ConnectionCustomizer生命周期做出promise。ConnectionCustomizers是无状态的。使用C3P0的内置泄漏检查设施更容易、更安全,如上文第一个要点所述。

  •  类似资料:
    • 问题内容: 要指定SQLite连接属性,请使用org.sqlite.SQLiteConfig,它的内容如下: 使用c3p0创建连接池的过程如下: 问题:如何创建结合了两者的数据源,让我设置诸如连接池的最大池大小和sqlite的同步模式之类的东西? 问题答案: 尝试 现在,数据源将是c3p0 PooledDataSource,它包装了已根据需要配置的SQLite未池化数据源。 请参阅C3P0的文档,

    • 问题内容: 自上次发布以来,是否提出了所有建议的更改,但此问题仍然困扰着我。这是我得到的错误: 这是我的hibernate.cfg.xml 和c3p0.properties 问题答案: 对于我来说,您配置的c3p0错误。 诸如c3p0.preferredTestQuery之类的属性必须位于类路径中的c3p0.properties文件中(例如WEB-INF / classes)。 下面是我的c3p0

    • 我不时在日志中出现以下错误: 查询数据库时出错。原因:组织。阿帕奇。平民dbcp。SQLNestedException:无法获取连接,池错误等待空闲对象超时 该错误可能存在于组织中。声纳。果心问题db。ActionPlanMapper 错误可能涉及组织。声纳。果心问题db。ActionPlanMapper。芬德比克斯 执行查询时发生错误 我应该如何调整我的连接池设置,以便不再发生这种情况?

    • 我正在使用带有连接池的reactor-netty http客户端(0.7.X系列),我想配置池连接的空闲超时,但不知道在哪里。 更准确地说,我需要配置reactor-netty http客户端连接池,使其能够自动关闭在可配置超时内未看到任何活动的连接。这些连接是开放的,但在一段(可配置的)时间内没有传输字节。 如何配置reactory-netty超文本传输协议客户端抢先关闭空闲连接?

    • 我目前正试图找到一个替代我的android应用程序后端。目前,我使用php servlets查询Mysql数据库。数据库(Mysql)托管在我学院的一台计算机上,所以我不能更改任何配置,因为我不是管理员。我只能编辑自己的表。 我试图使用以下代码创建一个java RESTful服务器:

    • 我得到错误,而建立gradle(IDE工具版本3.1.3Android)Android版本: 3.1.3 gradle版本: 4.4无法下载文件下面时gradle同步下载https://jcenter.bintray.com/com/android/tools/build/gradle/3.1.3/gradle-3.1.3.pom21秒215毫秒 下载https://dl.google.com/d