首页 > 数据库 >c3p0数据库连接池出现Could not get JDBC Connection An attempt by a client to checkout a Connection has timed

c3p0数据库连接池出现Could not get JDBC Connection An attempt by a client to checkout a Connection has timed

时间:2024-10-14 15:02:00浏览次数:6  
标签:JDBC attempt checkout jar c3p0 Connection com 连接池

c3p0有些年头了,也曾红极一时。
但你是否遇到过,明明并发并不高,连接池最大连接数也设的挺大了,还是报无法获取新连接。

Could not get JDBC Connection An attempt by a client to checkout a Connection has timed out.


参考文章:
https://cloud.tencent.com/developer/article/2319703

https://cloud.tencent.com/developer/article/2319708

https://cloud.tencent.com/developer/article/2319709

通过上述3篇文章,可以大致了解到,c3p0的逻辑比较复杂,特别是数据连接的回收,采用异步线程Thread

Thread 我们知道,代码执行start(),调用后线程从NEW状态变为RUNNABLE状态,准备执行; 也就是说,只是告知可跑,具体什么时候跑,要看jvm心情。心情好马上就跑,心情不好,不知道要等到什么时候。

这会导致:连接池的连接都被占用,新的请求无法获取到连接(因为数据连接池一般都有最大连接数)

当新请求进来,发现当前连接全部都占用,会调用checkout方法,一般都配置了 `checkoutTimeout` 时间,等过了这个时间还未拿到连接,就抛出上述错误。

解决方案:

替换c3p0:

一般用这个数据库连接池的都是老项目,我这个还是jdk1.6的,替换方案: HikariCP-java6

```
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP-java6</artifactId>
<version>2.3.13</version>
</dependency>
```

非maven项目,参考:

1. HikariCP-java6-2.3.13.jar

2. slf4j-log4j12-1.7.20.jar

3. slf4j-api-1.7.16.jar

4. log4j-1.2.12.jar

jar包下载地址: 中央仓库

Maven Central: org.slf4j:slf4j-log4j12:1.7.20 (sonatype.com)

 

标签:JDBC,attempt,checkout,jar,c3p0,Connection,com,连接池
From: https://www.cnblogs.com/tomcatandjerry/p/18464213

相关文章

  • 第04章 SpringBoot集成JDBC
    首先,我们新创建一个“SpringBootJdbcDemo”的Maven工程。然后我们修改编码格式以及Maven仓库地址,我们省略这个过程了。接着我们再添加spring-boot-starter-parent,spring-boot-starter-web,spring-boot-starter-thymeleaf依赖库,然后我们还需要添加本章节要学习的spring-bo......
  • MySQL 的 JDBC 编程
    MySQL的JDBC编程使用java代码操作数据库jdbc统一了各种数据库的api准备阶段首先要准备编辑语言的安装:javajdk1.8数据库数据库驱动包:在中央仓库下载搜索MySQL第一个就是MySQLConnector/j下载完成后在IDEA中导入这个包打开IDEA新建一个java项目新建......
  • Python包导入报错:ValueError: attempted relative import beyond top-level package
    Python包导入报错:ValueError:attemptedrelativeimportbeyondtop-levelpackage前置知识:python-m命令python-m命令用于以模块的方式运行Python代码,而不是直接执行脚本文件。它为执行Python代码提供了一种更加灵活和标准化的方式,特别适用于包和模块。python-m的工作原......
  • Java日总结 --- JDBC
    JDBCAPI---StatementDDL为对数据库和表的增删改查操作,DML是对数据的增删改操作,DQL是对数据的查询操作Statement对象中的executeUpdate(sql)方法为执行sql语句的操作,同时该方法会返回一个值,为受影响的行数,也就是执行语句的条数当执行的是DML语句时,可以通过返回值是否大于......
  • ab压测的选项、示例和主要关注的指标意义以及ab压测问题Connection reset by peer (10
    一、ab压测的选项、示例和主要关注的指标意义1.ab压测的一些选项-nrequests    全部请求数-cconcurrency 并发数-ttimelimit   最传等待回应时间-ppostfile    POST数据文件-Tcontent-typePOSTContent-type-vverbosity   Howmuchtroubl......
  • JDBC
    目录简述JDBC操作数据库的步骤?PreparedStatement比Statement有什么优势?简述数据库连接池的机制原理?你知道有哪些数据库连接池?机制原理常见的数据库连接池简述JDBC操作数据库的步骤?JDBC(JavaDatabaseConnectivity)是一个JavaAPI,用于连接和执行查询在数据库中。以下是使......
  • ERROR [org.hibernate.transaction.JDBCTransaction] - Could not toggle autocommit
    错误描述: DEBUG[org.hibernate.SQL]-SELECTorp.ATTR6FROMDISTRIBUT_VIEWd WHEREd.state='1'ANDd.oper_logLIKE'%下单%' GROUPBYorp.ATTR6 ERROR[org.hibernate.transaction.JDBCTransaction]-Couldnottoggleautocommitjava.sql.SQLE......
  • Java日总结---JDBC
    JDBC就是使用java语言操作关系型数据库的一种API1.JDBAAPI---DriverManager(两个作用)注册驱动:在mysql8.0后是ClassforName("com.mysql.cj.jdbc.Driver");来实现的查看源码后发现是由Driver类中静态代码块,底层是由DriverManager中的registerDriver方法来做的提示:在mysql5......
  • peer closed connection in SSL handshake
    报错信息:2024/10/1110:45:13[error]11933#0:*437581086peerclosedconnectioninSSLhandshake(104:Connectionresetbypeer)whileSSLhandshakingtoupstream,client:69.69.69.8,server:127.0.0.1,request:"POST/car/lsimpleHTTP/1.1",upstre......
  • idea数据库图形化窗口连接数据库报错:Driver class ‘com.mysql.cj.jdbc.Driver‘ not
    报错信息在idea中数据库图形化窗口中,创建下图数据库连接点击测试连接后,发生报错:Driverclass'com.mysql.cj.jdbc.Driver'notfoundNodriverfilesprovided.报错界面:原因出现此错误的原因通常是数据库驱动程序尚未下载或未正确配置到IDEA中。解决方案......