2024年10月14日

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)

 

posted @ 2024-10-14 14:59 tomcat and jerry 阅读(86) 评论(0) 推荐(0) 编辑

2024年9月23日

摘要: 这是一个示例,问了文心一言,给出的答复,最简单的demo BEGIN -- 禁用日志 EXECUTE IMMEDIATE 'ALTER SYSTEM SET events=''10046 trace name context off'''; -- 执行你的批处理操作,比如插入或更新 INSERT I 阅读全文
posted @ 2024-09-23 15:39 tomcat and jerry 阅读(31) 评论(0) 推荐(0) 编辑

2024年2月26日

摘要: 原始链接: https://zhuanlan.zhihu.com/p/85298429 https://link.zhihu.com/?target=https%3A//answers.microsoft.com/zh-hans/windows/forum/all/win10%25E7%25AA%2 阅读全文
posted @ 2024-02-26 16:01 tomcat and jerry 阅读(115) 评论(0) 推荐(0) 编辑

2023年9月8日

摘要: Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Fri Sep 08 11:23:31 CST 2023 There wa 阅读全文
posted @ 2023-09-08 11:35 tomcat and jerry 阅读(110) 评论(0) 推荐(0) 编辑

2023年7月4日

摘要: # Spring boot 1.x 升级2.x boot 1.5.22 -> 2.7.0 swagger 2.9.2 -> 3.0.0 spring-data-redis 1.8.4.RELEASE -> 2.7.0 ## swagger: ```<dependency> <groupId>io.s 阅读全文
posted @ 2023-07-04 17:18 tomcat and jerry 阅读(114) 评论(0) 推荐(0) 编辑

2023年6月6日

摘要: # grep: 过滤 常用场景:举例: 查看java进程: ps -ef | grep java 选项 含义 -c 仅列出文件中包含模式的行数 -i 忽略模式中的字母大小写 -l 列出带有匹配行的文件名,不列出具体的匹配行 -n 列出所有的匹配行,并显示行号 -v 列出没有匹配模式的行,可以使用该选 阅读全文
posted @ 2023-06-06 20:36 tomcat and jerry 阅读(200) 评论(1) 推荐(0) 编辑

2021年1月27日

摘要: 敏捷开发 阅读全文
posted @ 2021-01-27 11:42 tomcat and jerry 阅读(215) 评论(0) 推荐(0) 编辑

2020年7月23日

摘要: Java里正则的一些高级用法,拓宽思路 阅读全文
posted @ 2020-07-23 09:51 tomcat and jerry 阅读(1522) 评论(0) 推荐(0) 编辑

2020年2月26日

摘要: 用Java来对图片进行操作:放大/缩小,resize,文件压缩 正常情况下,使用 BufferedImage image = ImageIO.read(new File("d:/test.jpg")); 或者直接使用第三方组件:net.coobird.thumbnailator net.coobir 阅读全文
posted @ 2020-02-26 17:46 tomcat and jerry 阅读(1892) 评论(0) 推荐(0) 编辑

2020年1月29日

摘要: VBOX扩容后,如何载入Centos? 在VBox里扩容了虚拟机后,Centos系统是无法识别的 1.1 使用fdisk -l 可以查看硬盘,此处扩容的盘在/dev/sda 1.2 fdisk /dev/sda 对硬盘分区 1.3 p --查看当前硬盘 1.4 m:帮助 这些命令不用记,m一下全可以 阅读全文
posted @ 2020-01-29 18:16 tomcat and jerry 阅读(218) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示