侧边栏壁纸
博主头像
天马行空 博主等级

凡是过往,皆为序章

  • 累计撰写 884 篇文章
  • 累计创建 11 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

一个提高数据库连接效率的方法-自愈式连接池(合集转寄)

sortie
2026-07-20 / 0 评论 / 0 点赞 / 0 阅读 / 0 字
转寄人: ZabraZoe (ZabraZoe)
标 题: 一个提高数据库连接效率的方法-自愈式连接池
发信站: 水木社区 (Mon Jul 20 12:57:21 2026)
来 源: 120.245.107.123
【以下内容由 ZabraZoe 转寄于 CProgramming 版】
ylh1969没谱
Mon Jun 15 16:42:02 2026 · #1
有一个提高效率的方法,完美解决了当年的数据库连接,长连接和短连接之争。 数据库连接句柄打开开销较大,一般需要30~40ms,如果在功能模块里开,性能降低一半不止。如果常开,在多线程服务器环境不合适。 所以采用了数据库连接池,虽然很多数据库提供了内建的连接池,那与我无关。 连接池在开始时是一个连接也不开。第一个使用者取用时打开一个连接,用完归还时,如果是正常归还,不关闭,就加到空闲队列头。下一次有人用就优先取已经打开的。因数据库致命故障归还的,就关闭,回收资源,放到队尾。 一个定时器线程定时扫描连接池健康度,有超过一定时间(一般是5分钟)不用的连接就关闭之。 这是一种极为可靠的连接池健康保障法。 一般的策略是保活,这很难的,你怎么发个信息并得到应答从而确定其活不活?如果那边太忙无暇顾及你,是否会误判?你想检查的连接正在被别人使用怎么办? 我的策略是保死,只检查空闲队列,没人用就弄死,不要老占着资源。有的数据库是按连接数付费的,没事别占着茅坑不拉屎,现用现开,最健康。保活的话,检查一次空闲队列需要很长时间,不知道需要多长时间才能得到一个应答,保死的只看时间戳,检查的非常快,锁队列的时间非常短。 实践中这个方法简单而可靠。数据库崩溃,服务器不必restart,等着数据库恢复即可,这叫自愈式连接池。
slowactionslowaction
Mon Jun 15 17:11:12 2026 · #2
实现空闲连接超时的功能 这个检查链接有效性没有替代关系
【 在 ylh1969 的大作中提到: 】 : 有一个提高效率的方法,完美解决了当年的数据库连接,长连接和短连接之争。 : 数据库连接句柄打开开销较大,一般需要30~40ms,如果在功能模块里开,性能降低一半不止。如果常开,在多线程服务器环境不合适。 : 所以采用了数据库连接池,虽然很多数据库提供了内建的连接池,那与我无关。
ylh1969没谱
Mon Jun 15 17:34:45 2026 · #3
不是检查连接有效性,是检查连接的无用性。无用的连接关闭,不要占有资源。 打开的连接长时间不用就没法保证其可用性,夜长梦多,打开的连接,越长的时间不用,损坏的可能性越大。 如何你认为5分钟太长,可以缩短一些。这个时间等同于心跳时间间隔。 可以证明,与心跳周期容错效果相同,开销要小得多。 你可以1秒钟检查一次呀,只不过应用超过1秒间隔就重新开一次数据库呗,多消耗50ms最多了。此法对数据库没有负担。 换句话说吧,越长时间不用,损坏的可能性越大,不要等坏了再处理,关上得了。用的时候再开。
【 在 slowaction 的大作中提到: 】 : 实现空闲连接超时的功能 : 这个检查链接有效性没有替代关系
slowactionslowaction
Mon Jun 15 17:44:01 2026 · #4
空闲超时功能是个非常常见的功能
【 在 ylh1969 的大作中提到: 】 : 不是检查连接有效性,是检查连接的无用性。无用的连接关闭,不要占有资源。 : 打开的连接长时间不用就没法保证其可用性,夜长梦多,打开的连接,越长的时间不用,损坏的可能性越大。 : 如何你认为5分钟太长,可以缩短一些。这个时间等同于心跳时间间隔。
ylh1969没谱
Mon Jun 15 18:08:00 2026 · #5
用在连接池管理上的不多见,当年也是争议挺大的,直到证明超时间隔与心跳间隔等价,才平息了质疑。 如果连接一直在被使用,根本就不需要心跳。
【 在 slowaction 的大作中提到: 】 : 空闲超时功能是个非常常见的功能
ylh1969没谱
Mon Jun 15 19:21:41 2026 · #6
我见过一个项目,100多个客户端,1秒一个心跳,调用存储过程,数据库光为了心跳就开销不小。日志蹭蹭的涨。当需要找故障点时就如大海捞针。
【 在 slowaction 的大作中提到: 】 : 空闲超时功能是个非常常见的功能
z16166Netguy
Tue Jun 16 13:21:07 2026 · #7
业务请求等价于心跳就行了,这样有业务请求包时,不用发专门的心跳包。 我搞长连接就这么干。
【 在 ylh1969 的大作中提到: 】 : 我见过一个项目,100多个客户端,1秒一个心跳,调用存储过程,数据库光为了心跳就开销不小。日志蹭蹭的涨。当需要找故障点时就如大海捞针。
ylh1969没谱
Tue Jun 16 15:53:56 2026 · #8
对的,心跳都是针对空闲连接的,就算没事,数据库也忙得很,好几十个客户端每人1秒一个,等有事时候数据库还得抽空给你干活。
【 在 z16166 的大作中提到: 】 : 业务请求等价于心跳就行了,这样有业务请求包时,不用发专门的心跳包。 : 我搞长连接就这么干。
ylh1969没谱
Tue Jun 16 15:55:39 2026 · #9
我一样,就比你多一个空闲连接超时关闭的功能。 像ATM之类的终端几百个,工作时间很少,一天到晚玩心跳,数据库真累。 如果长连接不管,中途数据库关了又起了,连接失效。
【 在 z16166 的大作中提到: 】 : 业务请求等价于心跳就行了,这样有业务请求包时,不用发专门的心跳包。 : 我搞长连接就这么干。
z16166Netguy
Tue Jun 16 16:55:31 2026 · #10
场景不一样。一直尽可能保持连接,是为了推送广告或者紧急响应给客户[emc49]
【 在 ylh1969 的大作中提到: 】 : 我一样,就比你多一个空闲连接超时关闭的功能。 : 像ATM之类的终端几百个,工作时间很少,一天到晚玩心跳,数据库真累。 : 如果长连接不管,中途数据库关了又起了,连接失效。
ylh1969没谱
Tue Jun 16 21:16:11 2026 · #11
说的是数据库连接呀,有这功能?起码当年没有。 当年要解决的问题是,短连接效率低,长连接不可靠,数据库负担也重,每个连接至少占数据库2M空间。两种观点争执不下。 连接池可以解决,心跳又加重了数据库负担。
【 在 z16166 的大作中提到: 】 : 场景不一样。一直尽可能保持连接,是为了推送广告或者紧急响应给客户
ylh1969没谱
Wed Jun 17 11:12:29 2026 · #12
测试在32核32线程的计算密集型任务里,5个数据库连接系统吞吐量最大。 一般项目建议工作线程数一半的连接数。具体怎么好,自己测。 每个数据库应用环境都有一个最佳连接数,有数据库连接池的话,就可以通过连接数的配置测出最佳连接数。 如果采用心跳保活的话,密集的心跳,会严重影响系统吞吐量。
【 在 z16166 的大作中提到: 】 : 场景不一样。一直尽可能保持连接,是为了推送广告或者紧急响应给客户
KnightZorro程序源 & 程序缘
Mon Jun 22 15:40:45 2026 · #13
这种逻辑如果跑在服务器, 完全应该用现成的java方案, 你说的都是常规操作
ylh1969没谱
Fri Jun 26 13:21:24 2026 · #14
我说的是C服务器。 JAVA做服务器,有个困难。 C有函数指针数组,服务器框架可以自定义服务函数加在函数表里即可。 客户端包头里指示出远过程函数号即可,JAVA没有指针,更没有函数指针。不知道怎么弄。
【 在 KnightZorro 的大作中提到: 】 : 这种逻辑如果跑在服务器, 完全应该用现成的java方案, 你说的都是常规操作
ylh1969没谱
Fri Jun 26 13:25:31 2026 · #15
自愈式连接池健康管理,不是常规操作吧?一般都是心跳保活大法。 目前没有听说采用保死策略的,就是连接空闲超时关闭。 JAVA的连接池,采用这个策略吗?请介绍下。
【 在 KnightZorro 的大作中提到: 】 : 这种逻辑如果跑在服务器, 完全应该用现成的java方案, 你说的都是常规操作
ylh1969没谱
Fri Jun 26 13:45:04 2026 · #16
一个服务器,接几百个ATM,使用率非常之低。需要挂着几百个数据库连接,每分每秒的在进行大规模心跳操作?
【 在 KnightZorro 的大作中提到: 】 : 这种逻辑如果跑在服务器, 完全应该用现成的java方案, 你说的都是常规操作
slowactionslowaction
Wed Jul 1 12:42:14 2026 · #17
你这完全是感觉自己发明了一个很厉害的技术 实际这是连接池的基础功能,几十年前都自带的
【 在 ylh1969 的大作中提到: 】 : 自愈式连接池健康管理,不是常规操作吧?一般都是心跳保活大法。 : 目前没有听说采用保死策略的,就是连接空闲超时关闭。 : JAVA的连接池,采用这个策略吗?请介绍下。
ylh1969没谱
Fri Jul 3 22:09:24 2026 · #18
不是发明,是采用,我喜欢用’采用’这个词。 但是没有发现采用保死策略的,都是保活的。 你知道哪个连接池使用保死策略的,请告知。 当年制定这个方案争议挺大的,所有人都坚持保活方案。 连接池健康管理,有不管的,有心跳保活的,没听说保死的。
【 在 slowaction 的大作中提到: 】 : 你这完全是感觉自己发明了一个很厉害的技术 : 实际这是连接池的基础功能,几十年前都自带的
slowactionslowaction
Sat Jul 4 10:20:10 2026 · #19
一个链接超时,这么简单的功能,都不能算个功能点 你不如去看看哪个链接没有超时功能
【 在 ylh1969 的大作中提到: 】 : 不是发明,是采用,我喜欢用’采用’这个词。 : 但是没有发现采用保死策略的,都是保活的。 : 你知道哪个连接池使用保死策略的,请告知。
ylh1969没谱
Sat Jul 4 18:09:15 2026 · #20
我说的是效率问题。 一直有个争论,大并发服务器环境下,长连接还是短连接。 长连接占用数据库连接太多,可靠性差,中途数据库故障处理麻烦。 短连接效率低,开关数据库开销大。 无论长短大量连接使得数据库不堪重负,激烈竞争可能导致数据库崩溃。 连接池较好的解决了这个矛盾,提供有限连接和排队机制。 但是连接的健康管理是个麻烦。一般几种处理方法: 1,不管,等效长连接,长时间可能遭遇数据库宕机。可靠性差。 2,取用时打开,归还时关闭,等效短连接,开销大。 3,心跳保活,数据库开销大,影响性能。这个也是超时,秒级的。 4,自愈式,就是空闲超时关闭连接,分钟级超时处理。完美,可靠性高,密集使用避免了频繁的打开关闭操作,闲时数据库无开销。 超时只是手段,不重要,重要的是超时干啥。 怎样平衡数据库的开销和可靠性问题。
【 在 slowaction 的大作中提到: 】 : 一个链接超时,这么简单的功能,都不能算个功能点 : 你不如去看看哪个链接没有超时功能
ylh1969没谱
Sat Jul 4 18:53:24 2026 · #21
19楼,3和4都是超时呀,我强调的是4,有谁超时按4办的?
【 在 slowaction 的大作中提到: 】 : 一个链接超时,这么简单的功能,都不能算个功能点 : 你不如去看看哪个链接没有超时功能
ylh1969没谱
Sun Jul 5 10:13:17 2026 · #22
做个比喻吧,你看中国建筑,立樑结构,外国教堂穹拱结构,照你说,都是石头木头,有啥新鲜。 我说穹栱结构受力更合理,你跟我搅和都是石头木头。 我的意思,传统的心跳保活技术相当于立樑结构,自愈式相当于穹栱结构。 基础材料都是超时,但精度需求不同,实现的复杂度和系统承担的压力不同。 自愈式超时非常简单,关闭连接即可,保活的,需要根据不同情况,或者发心跳或者关闭重开,如果心跳不回(心跳不回不等于数据库故障,业务繁忙来不及回呢?)或重开失败,还得想办法处理。应用这边开销大,数据库那边负担大,对正常业务产生明显的资源争夺。每个连接每秒或几秒一次的心跳,不能把正在心跳的连接放出去,对空闲队列锁定时间太长了,严重影响工作线程的效率。 自愈式几分钟捋一遍空闲队列,如果系统繁忙,就没有需要关闭的,很快捋完解锁,对工作线程的干扰几乎没有。 泛型编程和自愈式连接池,是榨干数据库性能的利器。 问题还是,哪个连接池采用了自愈式?
【 在 slowaction 的大作中提到: 】 : 一个链接超时,这么简单的功能,都不能算个功能点 : 你不如去看看哪个链接没有超时功能
ylh1969没谱
Sun Jul 5 14:44:38 2026 · #23
看19楼21楼,一开始我也是不管的,但是数据库服务器故障或维修,应用服务器就必须在数据库正常后restart。 采用心跳法太麻烦,数据库故障时,检查一圈就得几十秒,怎么弄1秒一跳。 保死法遇到这情况,自动关闭全部连接,再有取连接的,会收到错误码,自己处理去,与我无关。等数据库恢复业务就自动恢复了,所以叫自愈。
【 在 z16166 的大作中提到: 】 : 业务请求等价于心跳就行了,这样有业务请求包时,不用发专门的心跳包。 : 我搞长连接就这么干。
slowactionslowaction
Tue Jul 7 11:06:39 2026 · #24
大清已经亡了上百年了
【 在 ylh1969 的大作中提到: 】 : 做个比喻吧,你看中国建筑,立樑结构,外国教堂穹拱结构,照你说,都是石头木头,有啥新鲜。 : 我说穹栱结构受力更合理,你跟我搅和都是石头木头。 : 我的意思,传统的心跳保活技术相当于立樑结构,自愈式相当于穹栱结构。
slowactionslowaction
Tue Jul 7 11:08:37 2026 · #25
拜托看看日历吧 现在是2026不是1996
【 在 ylh1969 的大作中提到: 】 : 19楼,3和4都是超时呀,我强调的是4,有谁超时按4办的?
ylh1969没谱
Thu Jul 9 09:58:48 2026 · #26
2026也没见哪个连接池采用保死方式的。
【 在 slowaction 的大作中提到: 】 : 拜托看看日历吧 : 现在是2026不是1996
slowactionslowaction
Thu Jul 9 11:56:19 2026 · #27
有哪个连接池没有超时机制? 这个功能普通的不值一提 你说的你那个实现估计也是好多年以前的项目吧
【 在 ylh1969 的大作中提到: 】 : 2026也没见哪个连接池采用保死方式的。
ylh1969没谱
Thu Jul 9 16:45:56 2026 · #28
还胡搅。鸡同鸭讲。以下是给正常网友看的: 2026,ai时代,保死的方法ai想不出来,人可以想出来,让ai实施即可。 19楼,3,普通的保活,有两个超时,一个是心跳周期,一个是心跳发出后等待回音的时限。 4,保死方案,只有一个超时,而且是低精度超时,不必安排专门的线程,一般使用主线程代管即可,不占用工作线程。
【 在 slowaction 的大作中提到: 】 : 有哪个连接池没有超时机制? : 这个功能普通的不值一提 : 你说的你那个实现估计也是好多年以前的项目吧
ylh1969没谱
Thu Jul 9 16:48:36 2026 · #29
大楼大坝依然豆腐渣,公路大桥依然车压趴。
【 在 slowaction 的大作中提到: 】 : 大清已经亡了上百年了
slowactionslowaction
Thu Jul 9 17:12:13 2026 · #30
你上一次看开源代码或者配置连接池,最少也15年了吧? 白头宫女在,闲话说玄宗
【 在 ylh1969 的大作中提到: 】 : 还胡搅。鸡同鸭讲。以下是给正常网友看的: : 2026,ai时代,保死的方法ai想不出来,人可以想出来,让ai实施即可。 : 19楼,3,普通的保活,有两个超时,一个是心跳周期,一个是心跳发出后等待回音的时限。
ylh1969没谱
Fri Jul 10 10:33:38 2026 · #31
大道至简,不搞复杂理论,只求最简。 开源系统,包括连接池监控,好复杂哦,安装配置维护,真得把宫女熬白头。我们哪有时间玩这个。而且,它们的效率太低,系统开销太大,性能不行,无法满足需求。 神乎其神的连接池健康管理,原来如此简单。每次时钟就干这个。 二维连接池管理,多个连接池,每个连接池有多个连接。 void dbpool_check() int n,i,num; pool *pl; resource *rs; INT63+1 now; char buf[32]; if(!dbpool) return; now=now_usec(); pl=dbpool; for(n=0;n<DBPOOLNUM;n++,pl++) {//对于每一个连接池 if(!pl->lnk) continue; rs=pl->lnk; num=pl->resource_num; pthread_mutex_lock(&pl->mut); for(i=0;i<num;i++,rs++) {//对于每一个连接 if(rs->next >= 0) {//空闲的 if(rs->SQL_Connect.dbh>-1 && (now-rs->timestamp)>299000000) { //空闲时间太长了 ___SQL_CloseDatabase__(&rs->SQL_Connect); if(log_level) ShowLog(log_level,"%s:Close DBpool[%d].lnk[%d],since %s",__FUNCTION__, n,i,rusecstrfmt(buf,rs->timestamp,YEAR_TO_USEC)); } else {//占用的,只写日志。 if(rs->SQL_Connect.dbh>-1 && (now-rs->timestamp)>299000000) { //占用时间太长了 ShowLog(3,"%s:dbpool[%d].lnk[%d] used by tid=%lX,since %s", __FUNCTION__,n,i,rs->tid, rusecstrfmt(buf,rs->timestamp,YEAR_TO_USEC)); pthread_mutex_unlock(&pl->mut);
【 在 slowaction 的大作中提到: 】 : 你上一次看开源代码或者配置连接池,最少也15年了吧? : 白头宫女在,闲话说玄宗
slowactionslowaction
Fri Jul 10 11:17:07 2026 · #32
我去 你把超时时间硬编码写在代码了 就这还连接池
【 在 ylh1969 的大作中提到: 】 : 大道至简,不搞复杂理论,只求最简。 : 开源系统,包括连接池监控,好复杂哦,安装配置维护,真得把宫女熬白头。我们哪有时间玩这个。而且,它们的效率太低,系统开销太大,性能不行,无法满足需求。 : 神乎其神的连接池健康管理,原来如此简单。每次时钟就干这个。
ylh1969没谱
Fri Jul 10 12:59:26 2026 · #33
因为这个时间不敏感,不需要改变。改成配置文件也不难,但是没必要。 没有性能瓶颈,无需调优,这也是此法的优点。 即使漏几个时间片也没有任何问题。什么叫低精度定时器。
【 在 slowaction 的大作中提到: 】 : 我去 : 你把超时时间硬编码写在代码了 : 就这还连接池
slowactionslowaction
Fri Jul 10 16:07:08 2026 · #34
你这连接池大小是硬编码,超时时间也是硬编码 这就是个玩具 别说超时时间这种普通功能,你写出花来也是个玩具
【 在 ylh1969 的大作中提到: 】 : 因为这个时间不敏感,不需要改变。改成配置文件也不难,但是没必要。 : 没有性能瓶颈,无需调优,这也是此法的优点。 : 即使漏几个时间片也没有任何问题。什么叫低精度定时器。
ylh1969没谱
Fri Jul 10 16:37:55 2026 · #35
连接池大小和连接池数量都不是硬编码,那个大写的是变量。 static int DBPOOLNUM=0; static pool *dbpool=0; 超时时间前边解释过了,无关紧要。1分钟5分钟10分钟都无所谓,没有区别。用10分钟也可以,但是在调试时等的着急。 用完等5分钟,连接都关闭了,就成功了,5分钟是我耐心的极限与系统无关。 只激活一个线程,反复发请求,只打开1个连接就对了,不可以稀里糊涂所有的连接都给开了。 这个程序是真正投产项目,跟公司有协议,离职5年内不得披露技术内容。现在10年了才可以说10年前的事。 但是直到现在也没见到比这个更好的连接池管理策略,所以发出来共享。简单有效是我的设计原则,因为我懒。 你有更简便更有效的方案吗?拿出来讨论下。
【 在 slowaction 的大作中提到: 】 : 你这连接池大小是硬编码,超时时间也是硬编码 : 这就是个玩具 : 别说超时时间这种普通功能,你写出花来也是个玩具
slowactionslowaction
Fri Jul 10 16:56:51 2026 · #36
果然是十多年前的设计 没见过应该多学习 随便看一个连接池就知道超时是个非常普通的功能 顺路说一下,变量用全大写这是哪学来的毛病
【 在 ylh1969 的大作中提到: 】 : 连接池大小和连接池数量都不是硬编码,那个大写的是变量。 : static int DBPOOLNUM=0; : static pool *dbpool=0;
ylh1969没谱
Fri Jul 10 17:06:11 2026 · #37
哈,这是个遗留问题,内部变量,封装在模块内,与别人无关,就懒得改了。 再说这个程序本身并不是超时功能,只不过是低精度定时任务的一个嵌入模块。低精度定时线程才是你说的功能,那个线程里有个任务表,把这个函数塞进任务表即可。具体每15秒走一遍,就是说有15秒的误差,无所谓的啦,反正连接没关,不影响使用。 那么你超时干啥呢?可以说一下不?或者他们超时干的啥?我的超时就干了一件事: ___SQL_CloseDatabase__(&rs->SQL_Connect); 他们的有我的简单吗?如果比我简单,我就得好好学一下。
【 在 slowaction 的大作中提到: 】 : 果然是十多年前的设计 : 没见过应该多学习 : 随便看一个连接池就知道超时是个非常普通的功能
slowactionslowaction
Fri Jul 10 17:25:16 2026 · #38
你知道有个透明计算得了自然科学奖么 你这个一等奖有困难,二等奖应该有机会
【 在 ylh1969 的大作中提到: 】 : 哈,这是个遗留问题,内部变量,封装在模块内,与别人无关,就懒得改了。 : 再说这个程序本身并不是超时功能,只不过是低精度定时任务的一个嵌入模块。低精度定时线程才是你说的功能,那个线程里有个任务表,把这个函数塞进任务表即可。具体每15秒走一遍,就是说有15秒的误差,无所谓的啦,反正连接没关,不影响使用。 : 那么你超时干啥呢?可以说一下不?或者他们超时干的啥?
ylh1969没谱
Fri Jul 10 17:28:56 2026 · #39
不用了,你可以拿我的方案去领奖。 题目就是“最简连接池健康管理方案”。 可以使用低精度定时器,对应用干扰很小,每15秒干扰一次很快结束。 如果保活方案,1~3秒干扰一次每个连接都要限时3秒(3秒也不一定可靠,数据库忙可能来不及回复导致误判)的等待回复,对应用干扰太大了。 这个方案理所当然的可以扩展到任何连接,不限于数据库。 实际上也被用到网络连接,一个3维网络连接池,包括了交易路由功能,容错功能,负载均衡功能。
【 在 slowaction 的大作中提到: 】 : 你知道有个透明计算得了自然科学奖么 : 你这个一等奖有困难,二等奖应该有机会
nikezhang难得糊涂
Fri Jul 10 17:53:54 2026 · #40
很多数据库驱动都提供连接池功能,你才发现?你out了
【 在 ylh1969 (没谱) 的大作中提到: 】 : 有一个提高效率的方法,完美解决了当年的数据库连接,长连接和短连接之争。 : 数据库连接句柄打开开销较大,一般需要30~40ms,如果在功能模块里开,性能降低一半不止。如果常开,在多线程服务器环境不合适。 : 所以采用了数据库连接池,虽然很多数据库提供了内建的连接池,那与我无关。 : 连接池在开始时是一个连接也不开。第一个使用者取用时打开一个连接,用完归还时,如果是正常归还,不关闭,就加到空闲队列头。下一次有人用就优先取已经打开的。因数据库致命故障归还的,就关闭,回收资源,放到队尾。
nikezhang难得糊涂
Fri Jul 10 17:54:51 2026 · #41
你怎么定义无用?
【 在 ylh1969 (没谱) 的大作中提到: 】 : 不是检查连接有效性,是检查连接的无用性。无用的连接关闭,不要占有资源。 : 打开的连接长时间不用就没法保证其可用性,夜长梦多,打开的连接,越长的时间不用,损坏的可能性越大。 : 如何你认为5分钟太长,可以缩短一些。这个时间等同于心跳时间间隔。 : 可以证明,与心跳周期容错效果相同,开销要小得多。
nikezhang难得糊涂
Fri Jul 10 17:55:25 2026 · #42
你见识太少了,只要是个连接池就有这个功能
【 在 ylh1969 (没谱) 的大作中提到: 】 : 用在连接池管理上的不多见,当年也是争议挺大的,直到证明超时间隔与心跳间隔等价,才平息了质疑。 : 如果连接一直在被使用,根本就不需要心跳。 : 【 在 slowaction 的大作中提到: 】 : : 空闲超时功能是个非常常见的功能
nikezhang难得糊涂
Fri Jul 10 17:56:48 2026 · #43
java的引用相当于指针的功能
【 在 ylh1969 (没谱) 的大作中提到: 】 : 我说的是C服务器。 : JAVA做服务器,有个困难。 : C有函数指针数组,服务器框架可以自定义服务函数加在函数表里即可。 : 客户端包头里指示出远过程函数号即可,JAVA没有指针,更没有函数指针。不知道怎么弄。
nikezhang难得糊涂
Fri Jul 10 17:58:38 2026 · #44
怎么可能几百个,有初始值和最大值的,初始化的时候只有10个,满了之后开新的,直到达到最大值,然后就是最早开启的先关闭
【 在 ylh1969 (没谱) 的大作中提到: 】 : 一个服务器,接几百个ATM,使用率非常之低。需要挂着几百个数据库连接,每分每秒的在进行大规模心跳操作? : 【 在 KnightZorro 的大作中提到: 】 : : 这种逻辑如果跑在服务器, 完全应该用现成的java方案, 你说的都是常规操作
nikezhang难得糊涂
Fri Jul 10 17:59:59 2026 · #45
因为没必要保死,连接池的功能决定了的,你随用随开那没用连接池一样
【 在 ylh1969 (没谱) 的大作中提到: 】 : 不是发明,是采用,我喜欢用’采用’这个词。 : 但是没有发现采用保死策略的,都是保活的。 : 你知道哪个连接池使用保死策略的,请告知。 : 当年制定这个方案争议挺大的,所有人都坚持保活方案。
ylh1969没谱
Fri Jul 10 18:00:20 2026 · #46
打开状态在空闲队列里呆的时间太长。 if(rs->SQL_Connect.dbh>-1 && (now-rs->timestamp)>299000000)
【 在 nikezhang 的大作中提到: 】 : 你怎么定义无用?
nikezhang难得糊涂
Fri Jul 10 18:00:40 2026 · #47
长链接也不是永久连接,最多几分钟
【 在 ylh1969 (没谱) 的大作中提到: 】 : 我说的是效率问题。 : 一直有个争论,大并发服务器环境下,长连接还是短连接。 : 长连接占用数据库连接太多,可靠性差,中途数据库故障处理麻烦。 : 短连接效率低,开关数据库开销大。
ylh1969没谱
Fri Jul 10 18:02:30 2026 · #48
保死?哪个?
【 在 nikezhang 的大作中提到: 】 : 你见识太少了,只要是个连接池就有这个功能
nikezhang难得糊涂
Fri Jul 10 18:03:16 2026 · #49
只有常量才是全大写,你这个错误用法是谁教你的?
【 在 ylh1969 (没谱) 的大作中提到: 】 : 连接池大小和连接池数量都不是硬编码,那个大写的是变量。 : static int DBPOOLNUM=0; : static pool *dbpool=0;
ylh1969没谱
Fri Jul 10 18:04:49 2026 · #50
不呀,5分钟之内不关,密集应用数据库始终开的。5分钟都不来,来一次花50ms开一下数据库不过分吧?
【 在 nikezhang 的大作中提到: 】 : 因为没必要保死,连接池的功能决定了的,你随用随开那没用连接池一样
nikezhang难得糊涂
Fri Jul 10 18:04:55 2026 · #51
你这个超过5分钟不用就关闭就是连接池自带的超时关闭功能,你就别自己造轮子了
【 在 ylh1969 (没谱) 的大作中提到: 】 : 有一个提高效率的方法,完美解决了当年的数据库连接,长连接和短连接之争。 : 数据库连接句柄打开开销较大,一般需要30~40ms,如果在功能模块里开,性能降低一半不止。如果常开,在多线程服务器环境不合适。 : 所以采用了数据库连接池,虽然很多数据库提供了内建的连接池,那与我无关。 : 连接池在开始时是一个连接也不开。第一个使用者取用时打开一个连接,用完归还时,如果是正常归还,不关闭,就加到空闲队列头。下一次有人用就优先取已经打开的。因数据库致命故障归还的,就关闭,回收资源,放到队尾。
nikezhang难得糊涂
Fri Jul 10 18:06:40 2026 · #52
如果你还是现用现开,那和玩具写法的每次select之前先connect,select之后再close也没什么区别,根本不能叫做连接池
【 在 ylh1969 (没谱) 的大作中提到: 】 : 有一个提高效率的方法,完美解决了当年的数据库连接,长连接和短连接之争。 : 数据库连接句柄打开开销较大,一般需要30~40ms,如果在功能模块里开,性能降低一半不止。如果常开,在多线程服务器环境不合适。 : 所以采用了数据库连接池,虽然很多数据库提供了内建的连接池,那与我无关。 : 连接池在开始时是一个连接也不开。第一个使用者取用时打开一个连接,用完归还时,如果是正常归还,不关闭,就加到空闲队列头。下一次有人用就优先取已经打开的。因数据库致命故障归还的,就关闭,回收资源,放到队尾。
ylh1969没谱
Fri Jul 10 18:08:03 2026 · #53
那就是说,都会关闭的? 就是你说的,保基础的10个? 我保0个。 当初的确有人提出保部分,这就麻烦了,这一部分就得心跳。
【 在 nikezhang 的大作中提到: 】 : 长链接也不是永久连接,最多几分钟
slowactionslowaction
Fri Jul 10 18:14:48 2026 · #54
要保持基础可用的数量 保证响应速度 你估计连正规的连接池功能列表都没读过 弄了个超时功能当宝贝
【 在 ylh1969 的大作中提到: 】 : 那就是说,都会关闭的? : 就是你说的,保基础的10个? : 我保0个。
ylh1969没谱
Fri Jul 10 18:21:28 2026 · #55
不一回事,目的不同。 我见过一个数据库,用连接池限制连接数,我们按50个连接买的,实际要有400个左右的终端用户。 还好有我们自己的应用服务器,连接池开30个连接,让400个终端排队使用。 自己的连接池还有一个作用,通过设置连接数,可以测出来在你的应用环境下几个连接系统吞吐量最高。 我们一个项目,计算密集型,3台32核服务器,实测结果,每台5个连接吞吐量最高。一台12核用作交易管理器。数据库是2台8核sparc,ORACLE RAC。 业务是管理器从数据库读出数据,分配给3个服务器96个线程进行计算,结果存入数据库。
【 在 nikezhang 的大作中提到: 】 : 很多数据库驱动都提供连接池功能,你才发现?你out了
ylh1969没谱
Fri Jul 10 18:22:38 2026 · #56
按下标访问函数?
【 在 nikezhang 的大作中提到: 】 : java的引用相当于指针的功能
ylh1969没谱
Fri Jul 10 18:23:26 2026 · #57
自我检讨
【 在 nikezhang 的大作中提到: 】 : 只有常量才是全大写,你这个错误用法是谁教你的?
ylh1969没谱
Fri Jul 10 18:25:22 2026 · #58
设置成保留0个,超时关闭即可。
【 在 nikezhang 的大作中提到: 】 : 你这个超过5分钟不用就关闭就是连接池自带的超时关闭功能,你就别自己造轮子了
ylh1969没谱
Fri Jul 10 18:35:59 2026 · #59
用别人的轮子我吃过大亏呀! 我的交易中间件里有一个传输压缩功能,原先自己写的,经过压力测试,很可靠, 后来发现一个quicklz,又快压缩比又高,就改用它了。 一个应用项目停车场吧,开始挺好。大概就是CPUID那个补丁后,造成频频死机,想了很多办法也没解决。最后项目夭折。过了很久,在一次压力测试偶然发现,关闭压缩就好了,压缩就过不了。后来换回自己的轮子,问题解决。可是项目没救了。 后来测一下,补丁前的系统没事,补丁后的不灵。没有继续追它的源码了,没心情,不用就行。
【 在 nikezhang 的大作中提到: 】 : 你这个超过5分钟不用就关闭就是连接池自带的超时关闭功能,你就别自己造轮子了
slowactionslowaction
Fri Jul 10 18:45:06 2026 · #60
这都哪跟哪 限制连接数和连接池没有一毛钱的关系
【 在 ylh1969 的大作中提到: 】 : 不一回事,目的不同。 : 我见过一个数据库,用连接池限制连接数,我们按50个连接买的,实际要有400个左右的终端用户。 : 还好有我们自己的应用服务器,连接池开30个连接,让400个终端排队使用。
ylh1969没谱
Fri Jul 10 18:49:02 2026 · #61
就是用连接池限制连接数呀,400个人一拥而上,不堵死数据库才怪呢,跟挤公共汽车似的。 我有连接池,就让30个人上,其余排队。数据库轻松多了,也可靠多了。
【 在 slowaction 的大作中提到: 】 : 这都哪跟哪 : 限制连接数和连接池没有一毛钱的关系
slowactionslowaction
Fri Jul 10 18:53:59 2026 · #62
并发限制是个独立的约束 和连接池没有任何关系
【 在 ylh1969 的大作中提到: 】 : 就是用连接池限制连接数呀,400个人一拥而上,不堵死数据库才怪呢,跟挤公共汽车似的。 : 我有连接池,就让30个人上,其余排队。数据库轻松多了,也可靠多了。
ylh1969没谱
Fri Jul 10 18:56:36 2026 · #63
不保。就超时关闭。保的你就得心跳,心跳就麻烦,就会对应用造成干扰,不心跳就无法保证在闲置期间数据库宕机后的有效性。 心跳就会使应用频繁的等待取连接(几秒钟一次的干扰),响应速度更慢。
【 在 slowaction 的大作中提到: 】 : 要保持基础可用的数量 : 保证响应速度 : 你估计连正规的连接池功能列表都没读过
ylh1969没谱
Fri Jul 10 18:57:47 2026 · #64
连接池就是并发性资源约束手段。
【 在 slowaction 的大作中提到: 】 : 并发限制是个独立的约束 : 和连接池没有任何关系
slowactionslowaction
Fri Jul 10 19:03:25 2026 · #65
谁告诉你的需要用连接池实现并发限制? 你这数据库就你这程序一个用户, 别的业务不许用这个数据库服务? 运维终端也不许连? 你这连基本概念都不清楚,还敢设计连接池
【 在 ylh1969 的大作中提到: 】 : 连接池就是并发性资源约束手段。
ylh1969没谱
Fri Jul 10 19:05:13 2026 · #66
自己的连接池还有一个作用,通过设置连接数,可以测出来在你的应用环境下几个连接系统吞吐量最高。 我们一个项目,计算密集型,3台32核服务器,实测结果,每台5个连接吞吐量最高。一台12核用作交易管理器。数据库是2台8核sparc,ORACLE RAC。 业务是管理器从数据库读出数据,(也是通过连接池)分配给3个服务器96个线程进行计算,结果存入数据库。 原因如下: 一个管理器1个连接,3个服务器5*3=15个连接,共16个,恰好是数据库引擎2*8=16个。 多一个少一个吞吐量都低。 32线程抢5个数据库连接。正好应用服务器与数据库引擎都达到性能饱和。
【 在 slowaction 的大作中提到: 】 : 谁告诉你的需要用连接池实现并发限制? : 你这数据库就你这程序一个用户, : 别的业务不许用这个数据库服务?
slowactionslowaction
Fri Jul 10 19:09:50 2026 · #67
你说的这个和连接池有什么关系? 你连连接池干什么用的都不知道
【 在 ylh1969 的大作中提到: 】 : 自己的连接池还有一个作用,通过设置连接数,可以测出来在你的应用环境下几个连接系统吞吐量最高。 : 我们一个项目,计算密集型,3台32核服务器,实测结果,每台5个连接吞吐量最高。一台12核用作交易管理器。数据库是2台8核sparc,ORACLE RAC。 : 业务是管理器从数据库读出数据,(也是通过连接池)分配给3个服务器96个线程进行计算,结果存入数据库。
ylh1969没谱
Fri Jul 10 19:11:17 2026 · #68
我玩一辈子并发计算了。 并发度就是用连接池控制的。连接池负责并发数管理,交易路由管理,负载均衡,服务器容错。。。。。连接池是并发管理的基础部件。 32核服务器32个线程怎么控制的?连接池呀,每个服务器32个连接就是32个线程呀!多了少了吞吐量都低,可以测的。 容错也是它呀,哪个服务器有问题就关闭哪个连接,任务分配给别的服务器。恢复了再加回来实现自愈。 负载均衡也是它呀,空闲连接与总连接数的比值就是权重。LVS就是不知道这个比值所以分不均。
【 在 slowaction 的大作中提到: 】 : 谁告诉你的需要用连接池实现并发限制? : 你这数据库就你这程序一个用户, : 别的业务不许用这个数据库服务?
slowactionslowaction
Fri Jul 10 19:20:11 2026 · #69
玩了一辈子还把超时时间写死在代码里? 还用全大写变量?
【 在 ylh1969 的大作中提到: 】 : 我玩一辈子并发计算了。 : 并发度就是用连接池控制的。连接池负责并发数管理,交易路由管理,负载均衡,服务器容错。。。。。连接池是并发管理的基础部件。 : 32核服务器32个线程怎么控制的?连接池呀,每个服务器32个连接就是32个线程呀!多了少了吞吐量都低,可以测的。
ylh1969没谱
Fri Jul 10 19:28:16 2026 · #70
这都小意思,我做的是工具,用我的工具的不用关心这个。给配置文件徒增许多参数,使用者麻烦不麻烦呀!我追求的是极简。因为我懒。 超时时间是性能的不敏感值,没必要配置呀,说了多少遍了!
【 在 slowaction 的大作中提到: 】 : 玩了一辈子还把超时时间写死在代码里? : 还用全大写变量?
ylh1969没谱
Fri Jul 10 19:36:04 2026 · #71
负载均衡和容错,人们通常认为是两个无关功能,同事是这么说的。但是我看来就是一回事。 这两个都是高大上的题目,我就用100多行搞定,就用连接池。 开始用LVS,负载均衡,即搞不定均衡也搞不定容错,还老大老复杂了,配置维护极其麻烦,工作还不可靠。经常把连接请求分配到坏服务器去。 还是自己造轮子,完全透明免维护。 一个晋升工程师的,写了个论文“交路计算”,这程序是12306用的。我的程序,就3行,还比他的好用,可是怎么拿成绩呀,哎。。。。。。
【 在 slowaction 的大作中提到: 】 : 玩了一辈子还把超时时间写死在代码里? : 还用全大写变量?
ylh1969没谱
Fri Jul 10 19:40:44 2026 · #72
数据库当然是许多项目共用,所以才需要连接池呀!我这组3*32服务器,就用16个数据库连接,不然就得96个连接了吧!数据库引擎当然更有能力为别人服务啦! 而且,没任务的时候多,连接都关闭了岂不更好? 别人用不用连接池我管不着,我自己不用就撒手。
【 在 slowaction 的大作中提到: 】 : 谁告诉你的需要用连接池实现并发限制? : 你这数据库就你这程序一个用户, : 别的业务不许用这个数据库服务?
ylh1969没谱
Fri Jul 10 19:46:16 2026 · #73
只第一次开,以后就一直保持,而且是最后释放的先分配,栈式。不忙的话尽量少开。 5分钟没人用才关闭。
【 在 nikezhang 的大作中提到: 】 : 如果你还是现用现开,那和玩具写法的每次select之前先connect,select之后再close也没什么区别,根本不能叫做连接池
ylh1969没谱
Fri Jul 10 19:48:01 2026 · #74
我是最后归还的先分配。早归还的如果不用就先关闭。
【 在 nikezhang 的大作中提到: 】 : 怎么可能几百个,有初始值和最大值的,初始化的时候只有10个,满了之后开新的,直到达到最大值,然后就是最早开启的先关闭
ylh1969没谱
Fri Jul 10 20:21:19 2026 · #75
我说你这个人怎么一点逻辑没有啊,我都说了,32个线程共用用5(可以配置数量)个数据库连接,不用连接池用啥呀! 我猜你是大学老师,怎么那么轴呀!把那些知识点分门分科特清楚,融会贯通不行呀。 一个模块完成一堆功能不行吗! 在单位的时候,每年毕业季单位招人都是我去挑人,你这么轴的肯定刷了。 我就可能出这种答辩题: 32个线程共用5个数据库连接,采用什么方法?
【 在 slowaction 的大作中提到: 】 : 你说的这个和连接池有什么关系? : 你连连接池干什么用的都不知道
ylh1969没谱
Fri Jul 10 20:31:16 2026 · #76
问题是他那个轮子有我的简单吗?他那么多功能我又不用,像心跳什么的,
【 在 nikezhang 的大作中提到: 】 : 你这个超过5分钟不用就关闭就是连接池自带的超时关闭功能,你就别自己造轮子了
slowactionslowaction
Fri Jul 10 20:44:10 2026 · #77
以前你自己定义一个变量,变量名是MTU 然后在这里扯了好几天MTU如何如何 你的MTU说的是你的那个变量名,不是网络概念那个MTU 现在你连授权限制,并发链接都和连接池搅和到一起 你说的连接池是不是又是你定义的?
【 在 ylh1969 的大作中提到: 】 : 我说你这个人怎么一点逻辑没有啊,我都说了,32个线程共用用5(可以配置数量)个数据库连接,不用连接池用啥呀! : 我猜你是大学老师,怎么那么轴呀!把那些知识点分门分科特清楚,融会贯通不行呀。 : 一个模块完成一堆功能不行吗!
ylh1969没谱
Fri Jul 10 21:27:10 2026 · #78
果然是老师,知识点都是分章节的,互相没关系。 你给答一下,32个线程共享5个数据库连接,怎么办! 我给你答一个:我那个MTU是与网络MTU有关的。当年单位用了个IBM的PS2做路由器,很笨,不会分包。我的数据包如果一次发个大包就过不去,所以设了一个MTU(最大传输单元),每次write不超过这个数就能过,超了就过不去。现在可能没有这么low的路由器了。不过中间件还保留了这个参数在配置文件里,可以空,就不切片呗。我都不记得当年争论的是你。
【 在 slowaction 的大作中提到: 】 : 以前你自己定义一个变量,变量名是MTU : 然后在这里扯了好几天MTU如何如何 : 你的MTU说的是你的那个变量名,不是网络概念那个MTU
xiechuanhustmavina
Fri Jul 10 21:44:09 2026 · #79
第一次听说把连接池当并发控制用的,囧 另外,玩了很多年数据库,库的负载中纯连接池相关的占比很低呀
【 在 slowaction 的大作中提到: 】 : 以前你自己定义一个变量,变量名是MTU然后在这里扯了好几天MTU如何如何你的MTU说的是你的那个变量名,不是网络概念那个 ...
ylh1969没谱
Fri Jul 10 21:50:56 2026 · #80
居然(我忘了这是清华大学的坛子,失敬)!大并发就是池呀,各种池各种队列。连接池线程池内存池。。。。。池+队列,就是并发手段呀! 我们做服务器时,一般采用每个连接一个线程(TPC)模式。 一个多核服务器,最佳线程数是核数。 那么TPC模式问题来了,成千上万的客户端来袭,会不会把服务器挤崩?每个线程要用栈呀! 你说怎样限制并发数呢?一个办法是线程池模式,这需要应用程序员懂得异步IO,人家搞业务的,这要求太高了吧? 我的解决办法,是前置一个小服务器,负责承载大量客户端的接入,以万计的。线程池模式。在客户端与服务器间转发数据。 它前端是万计的客户端,还要承担扛DDOS攻击,后端是若干台服务器,每个服务器多核,有限连接,有限线程。要求负载均衡,容错。某个服务器失效就要把负荷分配给其他服务器,恢复后可以重新加入。 那么,你怎样设计这个架构呢?
【 在 xiechuanhust 的大作中提到: 】 : 第一次听说把连接池当并发控制用的,囧 : 另外,玩了很多年数据库,库的负载中纯连接池相关的占比很低呀
slowactionslowaction
Fri Jul 10 22:03:31 2026 · #81
做设计最烦你这种先自己瞎理解一遍,把自己堵到死胡同,然后说必须要跳墙才能解决的 你有32个输入,有5个输出 哪个老师告诉你必须用连接池的? 教你变量全大写那个老师么? 你的计算程序明显不应该去碰数据库写入这种io操作 32个计算去抢5个io锁,这完全是神经病 他应该把结果扔到一个队列,然后去跑自己的运算 然后用5个线程去消费这些队列 用不用连接池并不重要
【 在 ylh1969 的大作中提到: 】 : 果然是老师,知识点都是分章节的,互相没关系。 : 你给答一下,32个线程共享5个数据库连接,怎么办! : 我给你答一个:我那个MTU是与网络MTU有关的。当年单位用了个IBM的PS2做路由器,很笨,不会分包。我的数据包如果一次发个大包就过不去,所以设了一个MTU(最大传输单元),每次write不超过这个数就能过,超了就过不去。现在可能没有这么low的路由器了。不过中间件还保留了这个参数在配置文件里,可以空,就不切片呗。我都不记得当年争论的是你。
ylh1969没谱
Fri Jul 10 22:09:59 2026 · #82
那就是线程池呀,这个架构对应用程序员来说要求有点高(塞到队列里还要等结果怎么弄?)。 我是做框架工具的,为应用服务,我的架构比你的用法简单。 get 使用,随便调什么语句什么过程调几次,多自由啊! release 完事,不需要应用程序员懂啥进程线程协程啥的。
【 在 slowaction 的大作中提到: 】 : 做设计最烦你这种先自己瞎理解一遍,把自己堵到死胡同,然后说必须要跳墙才能解决的 : 你有32个输入,有5个输出 : 哪个老师告诉你必须用连接池的?
ylh1969没谱
Fri Jul 10 22:14:55 2026 · #83
我的是一个框架工具,没有和某个具体应用绑定,那个3*32服务器只是一个实例,OLTP的更多一些,那可是数据库密集型(连接数一般放工作线程数的一半),我的框架都适用。要求就是使用简单。可靠。
【 在 slowaction 的大作中提到: 】 : 做设计最烦你这种先自己瞎理解一遍,把自己堵到死胡同,然后说必须要跳墙才能解决的 : 你有32个输入,有5个输出 : 哪个老师告诉你必须用连接池的?
slowactionslowaction
Fri Jul 10 22:19:18 2026 · #84
这和线程池没有关系 数据库许可的最高并发 资源决定的并发限制 连接池的大小 这三个是不同的概念,不能混为一谈 32个生产者和5个消费者的问题 应该用中间队列来把计算和io隔开 连接池不是用来解决多生产者和消费者的 你这属于基本概念都不清楚,自己造了狗皮膏药,随地乱贴
【 在 ylh1969 的大作中提到: 】 : 那就是线程池呀,这个架构对应用程序员来说要求有点高。 : 我是做框架工具的,为应用服务,我的架构比你的用法简单。 : get
ylh1969没谱
Fri Jul 10 22:20:17 2026 · #85
哥们,你那5个线程不是线程池是什么!
【 在 slowaction 的大作中提到: 】 : 这和线程池没有关系 : 数据库许可的最高并发 : 资源决定的并发限制
slowactionslowaction
Fri Jul 10 22:20:39 2026 · #86
是你念念不忘你的32服务器 来来回回提
【 在 ylh1969 的大作中提到: 】 : 我的是一个框架工具,没有和某个具体应用绑定,那个3*32服务器只是一个实例,OLTP的更多一些,那可是数据库密集型(连接数一般放工作线程数的一半),我的框架都适用。要求就是使用简单。可靠。
slowactionslowaction
Fri Jul 10 22:22:43 2026 · #87
我从开始就有5个线程,每个线程自己一个数据库链接 这和线程池或者连接池有什么关系?
【 在 ylh1969 的大作中提到: 】 : 哥们,你那5个线程不是线程池是什么!
ylh1969没谱
Fri Jul 10 22:24:45 2026 · #88
不是数据库许可的,是应用需求的,需求多少给多少。数据库好多项目用呢,我不能一个人都占了。 你把存数据库这事想简单了,存库不是一蹴而就的,需要许多操作的,不同线程还有不同流程一个任务队列只能干一种事,你那个想法实际上用不了。
【 在 slowaction 的大作中提到: 】 : 这和线程池没有关系 : 数据库许可的最高并发 : 资源决定的并发限制
ylh1969没谱
Fri Jul 10 22:29:47 2026 · #89
我们开始也这样呀,出问题才加的连接池的。 作业过程,数据库引擎宕机了,服务器就死了,得重开数据库重开服务器,麻烦大了。 后来才搞得连接池,连接池健康出问题才搞得自愈,这都是一步一步赶出来的。你们就会理论到理论一点实践经验没有。我一个同事,大牛,就不来这里,说是一帮老师弄不出啥来。
【 在 slowaction 的大作中提到: 】 : 我从开始就有5个线程,每个线程自己一个数据库链接 : 这和线程池或者连接池有什么关系?
slowactionslowaction
Fri Jul 10 22:31:16 2026 · #90
你先说,这是不是线程池?
【 在 ylh1969 的大作中提到: 】 : 我们开始也这样呀,出问题才加的连接池的。 : 作业过程,数据库引擎宕机了,服务器就死了,得重开数据库重开服务器,麻烦大了。 : 后来才搞得连接池,连接池健康出问题才搞得自愈,这都是一步一步赶出来的。你们就会理论到理论一点实践经验没有。我一个同事,大牛,就不来这里,说是一帮老师弄不出啥来。
slowactionslowaction
Fri Jul 10 22:32:20 2026 · #91
你连连接池是干什么的都搞不清楚
【 在 ylh1969 的大作中提到: 】 : 我们开始也这样呀,出问题才加的连接池的。 : 作业过程,数据库引擎宕机了,服务器就死了,得重开数据库重开服务器,麻烦大了。 : 后来才搞得连接池,连接池健康出问题才搞得自愈,这都是一步一步赶出来的。你们就会理论到理论一点实践经验没有。我一个同事,大牛,就不来这里,说是一帮老师弄不出啥来。
slowactionslowaction
Fri Jul 10 22:36:01 2026 · #92
你这能把超时时间写死在代码里的,就别吹了
【 在 ylh1969 的大作中提到: 】 : 不是数据库许可的,是应用需求的,需求多少给多少。数据库好多项目用呢,我不能一个人都占了。 : 你把存数据库这事想简单了,存库不是一蹴而就的,需要许多操作的,不同线程还有不同流程一个任务队列只能干一种事,你那个想法实际上用不了。
ylh1969没谱
Fri Jul 10 22:54:02 2026 · #93
通用框架,做个例子,可以干计算密集型也可用于OLTP。 前者可以测一下几个连接最好,后者一般配置线程数的一半。
【 在 slowaction 的大作中提到: 】 : 是你念念不忘你的32服务器 : 来来回回提
ylh1969没谱
Fri Jul 10 22:58:07 2026 · #94
这里说的是连接池。 线程池也搞,不过不是这个贴的主题。 你弄得5线程守候一个队列就是线程池呀。 对我的应用场景不适合,我的服务器功能很多,数据库用法五花八门,弄几个任务队列呢?。我的你如果什么项目要用你自己用好了。
【 在 slowaction 的大作中提到: 】 : 你先说,这是不是线程池?
ylh1969没谱
Fri Jul 10 23:02:49 2026 · #95
前面说了,连接池可以干很多事。 这个数据库连接池只搞了共享连接,限制连接数和健康管理 在网络连接池,包括这些,再加上: 交易路由管理,负载均衡和容错。
【 在 slowaction 的大作中提到: 】 : 你连连接池是干什么的都搞不清楚
ylh1969没谱
Fri Jul 10 23:07:39 2026 · #96
这是一个投产项目。是经过很多项目逐步发展起来的。这个数字是不需要改变的。没必要增加配置项,也没必要宏定义,就这一个地方用。
【 在 slowaction 的大作中提到: 】 : 你这能把超时时间写死在代码里的,就别吹了
slowactionslowaction
Fri Jul 10 23:17:42 2026 · #97
你前面不说是框架工具,不和具体项目绑定么 你写了个值得单发个帖子的连接池,然后只能用于这个项目?
【 在 ylh1969 的大作中提到: 】 : 这是一个投产项目。是经过很多项目逐步发展起来的。这个数字是不需要改变的。
ylh1969没谱
Fri Jul 10 23:19:15 2026 · #98
通用的呀,任何项目都可以用,也推荐大家用,所以才发。
【 在 slowaction 的大作中提到: 】 : 你前面不说是框架工具,不和具体项目绑定么 : 你写了个值得单发个帖子的连接池,然后只能用于这个项目?
ylh1969没谱
Fri Jul 10 23:20:47 2026 · #99
哦,这不是一个投产项目,是一大堆投产项目。 不够严谨,抱歉。 你从那个程序,看出来与任何具体原因有关的内容吗?改到各位自己的环境谁都可以用呀。
【 在 slowaction 的大作中提到: 】 : 你前面不说是框架工具,不和具体项目绑定么 : 你写了个值得单发个帖子的连接池,然后只能用于这个项目?
slowactionslowaction
Fri Jul 10 23:23:02 2026 · #100
没人会用一个不能配置超时时间的连接池 并且你这连接池还不保持最少可用连接
【 在 ylh1969 的大作中提到: 】 : 通用的呀,任何项目都可以用,也推荐大家用,所以才发。
ylh1969没谱
Fri Jul 10 23:33:46 2026 · #101
一组或几组连接句柄,用于多个任务共享链接资源。
【 在 slowaction 的大作中提到: 】 : 你连连接池是干什么的都搞不清楚
ylh1969没谱
Fri Jul 10 23:41:25 2026 · #102
保持最少可用连接就得保证这些连接可用,为了保证可用,就得心跳,你知道啥叫心跳吗? 为了心跳就得经常锁定空闲队列,心跳是秒级,心跳是很慢的,空闲队列锁定时间会很长,这期间应用会取不到资源,得等,会严重影响系统响应时间。 如果你有一个系统,可以试试 保活数量0,关闭时间5分钟,大并发压力测一下哪个配置响应快。 如果数据库忙(别人也用),心跳响应会慢,会误判。我们别的系统心跳误判导致的故障可多了。 所以我的方案彻底取消心跳。 事实上,我这个方案的系统平均响应时间比你快得多。
【 在 slowaction 的大作中提到: 】 : 没人会用一个不能配置超时时间的连接池 : 并且你这连接池还不保持最少可用连接
slowactionslowaction
Fri Jul 10 23:47:56 2026 · #103
你最大的问题就是自己把自己限制死了 你那个教你变量全大写的老师教你的必须锁定空闲队列?
【 在 ylh1969 的大作中提到: 】 : 保持最少可用连接就得保证这些连接可用,为了保证可用,就得心跳,你知道啥叫心跳吗? : 为了心跳就得经常锁定空闲队列,心跳是秒级,心跳是很慢的,空闲队列锁定时间会很长,这期间应用会取不到资源,得等,会严重影响系统响应时间。 : 事实上,我这个方案的系统平均响应时间比你快得多。
ylh1969没谱
Fri Jul 10 23:52:10 2026 · #104
也可以把须跳的链接从空闲队列里取出来做心跳。但是依然是数据库负担。即使空闲也是1秒好几个请求的负担。数据库里还得搞个存储过程响应这些心跳。 做个压力测试吧,再做个数据库忙时压力测试。
【 在 slowaction 的大作中提到: 】 : 你最大的问题就是自己把自己限制死了 : 你那个教你变量全大写的老师教你的必须锁定空闲队列?
slowactionslowaction
Fri Jul 10 23:54:29 2026 · #105
好多个非常清晰的概念,应该在设计的时候分别实现的功能 被你搞成一坨烂泥
【 在 ylh1969 的大作中提到: 】 : 做个压力测试吧,再做个数据库忙时压力测试。
ylh1969没谱
Fri Jul 10 23:59:49 2026 · #106
谢谢老师,你的学生我不会收的。 我们是企业,要的是功能不关心概念。术语概念听听就好,黑猫白猫,抓住耗子就是好猫。没时间评价抓耗子的动作符合哪条定理。 我们就是土,弄个泛型的序列化反序列化函数,是整个交易中间件核心系统,就叫个打包拆包程序。
【 在 slowaction 的大作中提到: 】 : 好多个非常清晰的概念,应该在设计的时候分别实现的功能 : 被你搞成一坨烂泥
ylh1969没谱
Sat Jul 11 00:08:17 2026 · #107
对了,作压力测试时可以加一个鲁棒性测试,在最大压力时断开数据库 ,一会儿再恢复,,看看你的应用能活过来不。这个做不到,一大堆概念何用。
【 在 slowaction 的大作中提到: 】 : 好多个非常清晰的概念,应该在设计的时候分别实现的功能 : 被你搞成一坨烂泥
ylh1969没谱
Sat Jul 11 00:24:44 2026 · #108
方案设计期间有这个讨论,要不要保活一部分,那就需要管理高水位低水位,是否必要动态增加连接数问题。这需要外部干涉服务器的运行。 这太麻烦了,既然能够测出最佳连接数,高水位就是它,低水位就是0,增加连接数并不能提高系统吞吐量,那就不加。不需要的功能砍,得到最简管理方案,也是最可靠,吞吐量最大,响应时间最快的方案。我懒。赞成马斯克造车,能砍的都砍。
【 在 slowaction 的大作中提到: 】 : 没人会用一个不能配置超时时间的连接池 : 并且你这连接池还不保持最少可用连接
fairyazfairysky
Sat Jul 11 07:25:52 2026 · #109
10年前都有这机制了!
slowactionslowaction
Sat Jul 11 07:39:37 2026 · #110
怕学生进去嘲笑你变量全大写? 嘲笑连接池超时时间不能配置?
【 在 ylh1969 的大作中提到: 】 : 谢谢老师,你的学生我不会收的。 : 我们是企业,要的是功能不关心概念。术语概念听听就好,黑猫白猫,抓住耗子就是好猫。没时间评价抓耗子的动作符合哪条定理。 : 我们就是土,弄个泛型的序列化反序列化函数,是整个交易中间件核心系统,就叫个打包拆包程序。
ylh1969没谱
Sat Jul 11 12:04:09 2026 · #111
20年前就用了。
【 在 fairyaz 的大作中提到: 】 : 10年前都有这机制了!
ylh1969没谱
Sat Jul 11 12:13:16 2026 · #112
30楼的程序,你知道为啥用二维数据库连接池吗? 多个池,各自有不同的连接数。 来源是,铁路售票服务器。一个业务服务器为各个业务部门所用。 春运时,抢票那是非常紧张,各级业务部门也非常关心自己范围的业绩,经常会要进行实时进度统计,这个统计会严重影响前台售票作业。一度禁止在业务高峰进行统计分析作业。可是人们就是需要这时候查看呀,怎么解决? 这时候连接池上手了。建立若干用户角色,比方,售票业务,调度业务,账务业务,营销管理,每个角色对各个表有不同的权限。每个池按一个用户角色登录数据库,配给不同数量的连接数。 登录服务器的前端用户按门分类,给一个证书,证书里有一个DBLABEL,这个DBLABEL确定它可以使用哪个数据库连接池。 假如这么安排,售票池40个连接,调度池4个连接,账务3个,管理3(业务紧张时1)个。 这样管理团队就可以随便查询啦,不管多少管理客户端,排队使用这个池即可,不会对繁忙的售票业务造成过大干扰。愿意安排多少作业点由业务部门定,我们不管,反正资源就这么多了。
【 在 slowaction 的大作中提到: 】 : 你连连接池是干什么的都搞不清楚
slowactionslowaction
Sat Jul 11 12:30:54 2026 · #113
越说越暴露你不知道连接池干什么用的 统计消耗性能,你用连接池有毛用
【 在 ylh1969 的大作中提到: 】 : 30楼的程序,你知道为啥用二维数据库连接池吗? : 多个池,各自有不同的连接数。 : 来源是,铁路售票服务器。一个业务服务器为各个业务部门所用。
ylh1969没谱
Sat Jul 11 12:38:21 2026 · #114
越发说明你们做题行,解决问题不行。
【 在 slowaction 的大作中提到: 】 : 越说越暴露你不知道连接池干什么用的 : 统计消耗性能,你用连接池有毛用 来源是,铁路售票服务器。一个业务服务器为各个业务部门所用。 春运时,抢票那是非常紧张,各级业务部门也非常关心自己范围的业绩,经常会要进行实时进度统计,这个统计会严重影响前台售票作业。一度禁止在业务高峰进行统计分析作业。可是人们就是需要这时候查看呀,怎么解决? 这时候连接池上手了。建立若干用户角色,比方,售票业务,调度业务,账务业务,营销管理,每个角色对各个表有不同的权限。每个池按一个用户角色登录数据库,配给不同数量的连接数。 登录服务器的前端用户按门分类,给一个证书,证书里有一个DBLABEL,这个DBLABEL确定它可以使用哪个数据库连接池。 假如这么安排,售票池40个连接,调度池4个连接,账务3个,管理3(业务紧张时1)个。 这样管理团队就可以随便查询啦,不管多少管理客户端,排队使用这个池即可,不会对繁忙的售票业务造成过大干扰。愿意安排多少作业点由业务部门定,我们不管,反正资源就这么多了。 那时候售票端400多,调度十来个,账务十来个,管理也不少路局的,分局的,客票中心的,各站的。。。随便多少,想统计就统计,出不来结果等着呗。 你明白连接池怎么用了吗?
slowactionslowaction
Sat Jul 11 12:40:24 2026 · #115
你就知道个连接池的概念,然后认为他什么问题都能解决 统计慢你也指望连接池,一脑袋浆糊
【 在 ylh1969 的大作中提到: 】 : 越发说明你们做题行,解决问题不行。 : 来源是,铁路售票服务器。一个业务服务器为各个业务部门所用。 : 春运时,抢票那是非常紧张,各级业务部门也非常关心自己范围的业绩,经常会要进行实时进度统计,这个统计会严重影响前台售票作业。一度禁止在业务高峰进行统计分析作业。可是人们就是需要这时候查看呀,怎么解决?
slowactionslowaction
Sat Jul 11 12:42:10 2026 · #116
你这啥也不懂, 统计功能会锁表会有大量的计算和内存占用 你用连接池有鸡毛用
【 在 ylh1969 的大作中提到: 】 : 越发说明你们做题行,解决问题不行。 : 来源是,铁路售票服务器。一个业务服务器为各个业务部门所用。 : 春运时,抢票那是非常紧张,各级业务部门也非常关心自己范围的业绩,经常会要进行实时进度统计,这个统计会严重影响前台售票作业。一度禁止在业务高峰进行统计分析作业。可是人们就是需要这时候查看呀,怎么解决?
ylh1969没谱
Sat Jul 11 12:46:14 2026 · #117
只给他1~3个连接,10个人要统计也只有这几个任务在干,其他排队等着,10个人来统计估计这机器会死。
【 在 slowaction 的大作中提到: 】 : 你这啥也不懂, : 统计功能会锁表会有大量的计算和内存占用 : 你用连接池有鸡毛用
slowactionslowaction
Sat Jul 11 12:48:44 2026 · #118
你是不是认为给统计的1个链接,给卖票的100个链接 统计的就不会影响卖票了? 数据库负荷和链接有什么关系 你这明显啥也不懂,说的越多约露怯
【 在 ylh1969 的大作中提到: 】 : 只给他1~3个连接,10个人要统计也只有这几个任务在干,其他排队等着,10个人来统计估计这机器会死。
ylh1969没谱
Sat Jul 11 13:00:28 2026 · #119
更说明你脑子非常轴。 连接池做配给制呀,像极了银行的***,分字头配窗口。 事实上并不是上一个统计就干不了活,但是上多了肯定不行。就这个道理。 实时统计,写程序的懂,脏读,对售票影响小。所以会出现查票有买票无的情况。
【 在 slowaction 的大作中提到: 】 : 你是不是认为给统计的1个链接,给卖票的100个链接 : 统计的就不会影响卖票了? : 数据库负荷和链接有什么关系
slowactionslowaction
Sat Jul 11 13:12:31 2026 · #120
数据库负荷和他用多少个链接没关系 和连接池也没关系 你就知道个连接池,举了两个例子都裸唇不对马嘴 整个版的水平都被你拉低了
【 在 ylh1969 的大作中提到: 】 : 更说明你脑子非常轴。 : 连接池做配给制呀,像极了银行的, : 实时统计,写程序的懂,脏读,对售票影响小。所以会出现查票有买票无的情况。
ylh1969没谱
Sat Jul 11 18:30:45 2026 · #121
这次我虚心向你请教。 1.连接池的定义。 2.它的适用场合。 3.所起的作用。 我是恢复高考第一届的计算机专业,真没学过连接池。几十年就在运输生产第一线摸爬滚打,理论知识明显不足,请见谅。
【 在 slowaction 的大作中提到: 】 : 越说越暴露你不知道连接池干什么用的 : 统计消耗性能,你用连接池有毛用
slowactionslowaction
Sat Jul 11 18:53:07 2026 · #122
连接池解决频繁连接和断开数据库的开销和时延问题 首先,他只能解决连接的速度问题,不能解决数据库操作的负荷问题。 你说的统计场景,他一个做分析的业务能干出1000个普通查询的性能消耗。所以限制他的连接数几乎不解决任何问题。 这种场景应该读写分开,必要的时候复制一个离线库给统计用。 连接池适用于多个消费者,但是他并不需要时刻操作数据库的场景。 比如你说的购票场景,乘客用12306.只有他查询的时候,他读一下数据库,其他时候他看车次,选择车次的时候,不需要持有数据库链接。这个场景可能几百个乘客对应一个链接就够用。这时候要保证有空闲连接可以随时使用。不能让乘客等着建立新链接。
【 在 ylh1969 的大作中提到: 】 : 这次我虚心向你请教。 : 1.连接池的定义。 : 2.它的适用场合。
ylh1969没谱
Sat Jul 11 18:56:32 2026 · #123
定义?我前边100楼说的对吗?包括但不限于数据库。
【 在 slowaction 的大作中提到: 】 : 连接池解决频繁连接和断开数据库的开销和时延问题 : 首先,他只能解决连接的速度问题,不能解决数据库操作的负荷问题。 : 你说的统计场景,他一个做分析的业务能干出1000个普通查询的性能消耗。所以限制他的连接数几乎不解决任何问题。
slowactionslowaction
Sat Jul 11 19:04:49 2026 · #124
共享不是他的核心特征 他的核心特征是不实时创建和不实时关闭,用个缓冲池来动态管理 最大空闲时间是他的基本参数 所以你说的自愈,这是连接池的基本参数
【 在 ylh1969 的大作中提到: 】 : 定义?我前边100楼说的对吗?包括但不限于数据库。
ylh1969没谱
Sat Jul 11 19:38:43 2026 · #125
好的。但是问题不是绝对的。我可以做到基本不实时创建和销毁连接。长时间静默后的连接请求,创建一下,开销30~50ms,不过分吧,后续的请求都不用这个开销啦。如果整个系统5分钟都没有一个请求,关闭它也不是什么了不得的开销,对吧?就算整个系统5分钟一个请求,消耗50ms也没问题吧?因为sql数据库本身不是实时系统,任何操作都不保证时间,oltp只是以人的反应速度为参照,多50ms少50ms不会有感觉。
【 在 slowaction 的大作中提到: 】 : 共享不是他的核心特征 : 他的核心特征是不实时创建和不实时关闭,用个缓冲池来动态管理 : 最大空闲时间是他的基本参数
slowactionslowaction
Sat Jul 11 19:44:18 2026 · #126
你可以保留一定的空闲连接 这并不需要你说的什么心跳 超时了你关了,然后在开一部分, 你不维护, 和你的超时关闭是一个逻辑
【 在 ylh1969 的大作中提到: 】 : 好的。但是问题不是绝对的。我可以做到基本不实时创建和销毁连接。长时间静默后的连接请求,创建一下,开销30~50ms,不过分吧,后续的请求都不用这个开销啦。如果整个系统5分钟都没有一个请求,关闭它也不是什么了不得的开销,对吧?就算整个系统5分钟一个请求,消耗50ms也没问题吧?因为sql数据库本身不是实时系统,任何操作都不保证时间,oltp只是以人的反应速度为参照,多50ms少50ms不会有感觉。
ylh1969没谱
Sat Jul 11 19:47:17 2026 · #127
查了一下,跟你说的基本一致。后边有: 不止数据库,Redis、HTTP、RPC等所有基于TCP长连接的客户端,都有对应连接池,底层逻辑完全一致:复用TCP连接,限制并发连接总数。 就是说,有限制并发连接数的功能。我就是从这个需求开始搞连接池,就像猫捉老鼠,该窜就窜出去了,没有考虑用哪条物理定律计算一下。
【 在 slowaction 的大作中提到: 】 : 共享不是他的核心特征 : 他的核心特征是不实时创建和不实时关闭,用个缓冲池来动态管理 : 最大空闲时间是他的基本参数
ylh1969没谱
Sat Jul 11 19:53:26 2026 · #128
不保留又怎么样,oltp场合谁会在意那50ms呢!医保的终端点一下半天没反应你不是也没辙吗?
【 在 slowaction 的大作中提到: 】 : 你可以保留一定的空闲连接 : 这并不需要你说的什么心跳 : 超时了你关了,然后在开一部分,
slowactionslowaction
Sat Jul 11 19:56:57 2026 · #129
连接池核心需求就是不需要实时建立连接 你不在乎,你折腾连接池干什么
【 在 ylh1969 的大作中提到: 】 : 不保留又怎么样,oltp场合谁会在意那50ms呢!医保的终端点一下半天没反应你不是也没辙吗?
ylh1969没谱
Sat Jul 11 20:44:19 2026 · #130
作业密度高时就在乎,作业密度低时就不在乎。问题不是绝对的,是有条件的。 如果整个系统5分钟都没有一个请求,那就不在乎。如果一秒钟一万个请求就在乎,就需要控制,只准一部分人先富起来,其余排队。 我折腾连接池就为了限制并发度呀,任何并发系统都有最佳并行度,连接池就是最简单的控制并发度的工具呀,我懒。 如果5分钟以内总是有一个请求,那就自动保持一个连接,懂了吗?自动保持部分连接的工作不需要我做呀,我懒。你勤快你做一个客户端,1分钟打服务器一拳。
【 在 slowaction 的大作中提到: 】 : 连接池核心需求就是不需要实时建立连接 : 你不在乎,你折腾连接池干什么
slowactionslowaction
Sat Jul 11 20:58:29 2026 · #131
你就这业务理解还做交易的? 股票开市前和开市后查询量差好多个数量级 火车票是定点放票,也会有时点爆发
【 在 ylh1969 的大作中提到: 】 : 作业密度高时就在乎,作业密度低时就不在乎。问题不是绝对的,是有条件的。 : 如果整个系统5分钟都没有一个请求,那就不在乎。如果一秒钟一万个请求就在乎,就需要控制,只准一部分人先富起来,其余排队。 : 我折腾连接池就为了限制并发度呀,任何并发系统都有最佳并行度,连接池就是最简单的控制并发度的工具呀,我懒。
ylh1969没谱
Sat Jul 11 21:01:10 2026 · #132
对呀,我的方案就是为了解决这个问题呀,密集交易来临,连接就不会关闭呀! 密集交易来临就必须限制并行度达到系统最佳吞吐量,过高的并行度吞吐量会下降,甚至会憋死数据库。 就像车到站,乱挤谁也上不去。 12306最后解决问题就靠池和队呀。
【 在 slowaction 的大作中提到: 】 : 你就这业务理解还做交易的? : 股票开市前和开市后查询量差好多个数量级 : 火车票是定点放票,也会有时点爆发
slowactionslowaction
Sat Jul 11 21:05:57 2026 · #133
时点的时候,你的连接池是空的 你没解决任何问题
【 在 ylh1969 的大作中提到: 】 : 对呀,我的方案就是为了解决这个问题呀,密集交易来临,连接就不会关闭呀!
ylh1969没谱
Sat Jul 11 21:11:09 2026 · #134
连接用完排队呀!归还一个上一个。池和队是配套设施。这里没讨论队就是了,那个没什么好讨论的。 排着队上是最快的,一拥而上死的快。
【 在 slowaction 的大作中提到: 】 : 时点的时候,你的连接池是空的 : 你没解决任何问题
slowactionslowaction
Sat Jul 11 21:14:15 2026 · #135
需要你发挥作用的时候,你退化成没有连接池了 不需要你的时候,你这个那个好像挺厉害 实际没有毛用 交易系统就是要抗住时点并发, 其他时候,没有性能要求
【 在 ylh1969 的大作中提到: 】 : 连接用完排队呀!归还一个上一个。
ylh1969没谱
Sat Jul 11 21:19:59 2026 · #136
你怎么没逻辑呀,谁说的有队就没池啦! 归还连接时,給队发个signal不行吗!(这也就是我为啥造轮子,通用的连接池不会给我的队列发signal)。 还要我给你讲讲池和队的衔接逻辑吗? 你就这点逻辑水平,你的学生可咋办呀,愁死了。
【 在 slowaction 的大作中提到: 】 : 需要你发挥作用的时候,你退化成没有连接池了 : 不需要你的时候,你这个那个好像挺厉害 : 实际没有毛用
slowactionslowaction
Sat Jul 11 21:30:33 2026 · #137
时点来临的时候,你的连接池是空的 就这一点,你这设计就是废物
【 在 ylh1969 的大作中提到: 】 : 你怎么没逻辑呀,谁说的有队就没池啦! : 归还连接时,給队发个signal不行吗!(这也就是我为啥造轮子,通用的连接池不会给我的队列发signal)。 : 还要我给你讲讲池和队的衔接逻辑吗?
ylh1969没谱
Sat Jul 11 21:33:57 2026 · #138
你的回答总是出乎我意料,我就是解决高峰并发的呀,这个方案完美解决高峰并发,oltp和OLAP并发问题。系统运行极其平稳。
【 在 slowaction 的大作中提到: 】 : 需要你发挥作用的时候,你退化成没有连接池了 : 不需要你的时候,你这个那个好像挺厉害 : 实际没有毛用
ylh1969没谱
Sat Jul 11 21:37:02 2026 · #139
所谓空就是忙,所有的连接都在忙,池才会空,这就是系统最大吞吐量,不能再增加了,再加系统会变慢。 一个任务完成,就归还连接下一个任务上,有序queue就是最快的。 不懂你的时点是啥,大概是我们说的业务峰值。
【 在 slowaction 的大作中提到: 】 : 时点来临的时候,你的连接池是空的 : 就这一点,你这设计就是废物
slowactionslowaction
Sat Jul 11 21:39:12 2026 · #140
时点来的时候,你的连接池是不是空的? 你是不是要新建很多连接 讨论个技术问题不需要东拉西扯 从你用全大写的变量就知道你的水平 细节问题能处理好的程序,未必是个好程序 但是用全大写变量和写死超时时间这种错误都会范,那绝对是个烂程序
【 在 ylh1969 的大作中提到: 】 : 你的回答总是出乎我意料,我就是解决高峰并发的呀,这个方案完美解决高峰并发,oltp和OLAP并发问题。系统运行极其平稳。
ylh1969没谱
Sat Jul 11 21:40:53 2026 · #141
什么叫时点? 任何时候都不需要建立新链接,空了后续任务只需要排队。有归还连接时就上一个。 OLTP交易都非常短,毫秒级就归还连接,连接周转非常之快。在输入参数时,不需要服务器。参数收齐才找服务器,发出业务请求,服务器才取数据库连接,干完了马上归还,这期间一般毫秒级,然后向客户端返回信息。几千个客户端用几十个连接就够。用完也不会增加新连接,新的网络请求连接池没有就进入队列,直到排到取得连接。 数据库是有一定并行能力的,少量olap可以与OLTP并行的。 我就是用连接池的限制并行度的能力,限制olap的数量,就可以减少对OLTP的影响。各单位可以在业务繁忙时统计,等着别着急慢慢来。
【 在 slowaction 的大作中提到: 】 : 时点来的时候,你的连接池是不是空的? : 你是不是要新建很多连接 : 讨论个技术问题不需要东拉西扯
ylh1969没谱
Sun Jul 12 10:10:24 2026 · #142
139楼推荐给各位看官。 “细节问题能处理好的程序,未必是个好程序 但是用全大写变量和写死超时时间这种错误都会范,那绝对是个烂程序” 这句话经典。 会捉老鼠的猫,未必是好猫,不漂亮的猫绝对是烂猫。这就是教育的问题所在。 企业要的是会捉老鼠的猫,你们给的是漂亮猫。 不喜欢你这样老师的学生,不是怕他指出我的错误,我的问题明摆着他能指出来我会很赞赏,给他加分,我不喜欢的是,他没有逻辑,不会融会贯通举一反三。可能在看到老鼠时还在解偏微分方程。 教育与生产脱节,是最大的问题。
【 在 slowaction 的大作中提到: 】 : 时点来的时候,你的连接池是不是空的? : 你是不是要新建很多连接 : 讨论个技术问题不需要东拉西扯
slowactionslowaction
Sun Jul 12 10:28:22 2026 · #143
你拿个所有连接池都有的超时时间配置参数当宝贝一样 你这已经不是脱节的问题了,是已经被淘汰了
【 在 ylh1969 的大作中提到: 】 : 139楼推荐给各位看官。 : “细节问题能处理好的程序,未必是个好程序 : 但是用全大写变量和写死超时时间这种错误都会范,那绝对是个烂程序”
ylh1969没谱
Sun Jul 12 11:23:53 2026 · #144
我的是最简设计,不是加法是减法,告诉你可以减少什么可以使系统的性能更高,工作更可靠。 保留的活连接可以砍掉,心跳可以砍掉。可设置的超时参数可以没有,大量的参数取消,简化连接池的配置管理,整个系统完全免维护,具有极强的鲁棒性。 这些你都没看懂,老师白当了。 你需要的参数,活连接的最低值,连接的上限,连接的扩展上限,连接耗尽时的队列长度,任务在队列中最长等待时限,心跳周期,心跳等待回复的时限,空闲超时时限。統统砍掉,使用者不需要理解这些。用不着的功能根本不写,我懒。
【 在 slowaction 的大作中提到: 】 : 你拿个所有连接池都有的超时时间配置参数当宝贝一样 : 你这已经不是脱节的问题了,是已经被淘汰了
slowactionslowaction
Sun Jul 12 11:40:46 2026 · #145
首先,你基本功非常差,用全大写的变量和不能配置的参数 其次,你把一个任何一个连接池都带的超时参数,认为非常有价值,完全不了解技术发展 最后,你对业务的理解也非常差,认为统计类业务可以用限制他的连接数来限制他对数据库的负荷 只会像孔乙己一样的讲似是而非的大道理 这是一个被技术淘汰的人的典型特征
【 在 ylh1969 的大作中提到: 】 : 我的是最简设计,不是加法是减法,告诉你可以减少什么可以使系统的性能更高,工作更可靠。 : 保留的活连接可以砍掉,心跳可以砍掉。可设置的超时参数可以没有,大量的参数取消,简化连接池的配置管理,整个系统完全免维护,具有极强的鲁棒性。 : 这些你都没看懂,老师白当了。
ylh1969没谱
Sun Jul 12 11:45:26 2026 · #146
一个任何一个连接池都带的超时参数,我认为非常没有价值,固定即可。 这个参数对系统吞吐量,系统延时,系统鲁棒性完全没有意义。 其他时间参数及其它参数完全不需要。那些有害无益的功能都砍掉。是对现有技术的最优简化。 大道至简,这个道理你不懂,所以你们教出来的学生落后于时代。教育落后时代至少10年,以至于华为腾讯阿里要自己办学校了,现在的毕业生,企业真用不了。 我自己也是,来到企业,学过的东西2%有用的都没有,一年之内全面知识更新才能胜任工作。 你再看看143楼,我编辑过了。
【 在 slowaction 的大作中提到: 】 : 首先,你基本功非常差,用全大写的变量和不能配置的参数 : 其次,你把一个任何一个连接池都带的超时参数,认为非常有价值,完全不了解技术发展 : 最后,你对业务的理解也非常差,认为统计类业务可以用限制他的连接数来限制他对数据库的负荷
slowactionslowaction
Sun Jul 12 11:55:45 2026 · #147
看看这个帖子的标题 任何一个实现都带的功能,你发篇长文,好像实现了什么了不起的东西 你不感觉可笑么
【 在 ylh1969 的大作中提到: 】 : 一个任何一个连接池都带的超时参数,我认为非常没有价值,固定即可。 : 这个参数对系统吞吐量,系统延时,系统鲁棒性完全没有意义。 : 其他时间参数及其它参数完全不需要。那些有害无益的功能都砍掉。是对现有技术的最优简化。
slowactionslowaction
Sun Jul 12 11:58:33 2026 · #148
你几乎每个帖子都编辑 你已经老了
【 在 ylh1969 的大作中提到: 】 : 一个任何一个连接池都带的超时参数,我认为非常没有价值,固定即可。 : 这个参数对系统吞吐量,系统延时,系统鲁棒性完全没有意义。 : 其他时间参数及其它参数完全不需要。那些有害无益的功能都砍掉。是对现有技术的最优简化。
ylh1969没谱
Sun Jul 12 11:59:08 2026 · #149
大家回复我才知道,你们那个系统,原来可以优化掉那么多东西。当然许多参数当年也知道,包括部分活连接,当年争论过才砍掉的。
【 在 slowaction 的大作中提到: 】 : 看看这个帖子的标题 : 任何一个实现都带的功能,你发篇长文,好像实现了什么了不起的东西 : 你不感觉可笑么
slowactionslowaction
Sun Jul 12 12:00:00 2026 · #150
你坚持你的300秒不需要修改 请问如果你的数据库管理员把连接超时配置了240秒,你怎么办
【 在 ylh1969 的大作中提到: 】 : 一个任何一个连接池都带的超时参数,我认为非常没有价值,固定即可。 : 这个参数对系统吞吐量,系统延时,系统鲁棒性完全没有意义。 : 其他时间参数及其它参数完全不需要。那些有害无益的功能都砍掉。是对现有技术的最优简化。
ylh1969没谱
Sun Jul 12 12:08:26 2026 · #151
加上配置没有难度,加上就是,不是讨论的根本节点。 FREE_LINK_TIMEOUT=300。 程序里加一个getenv()配个参数即可以了
【 在 slowaction 的大作中提到: 】 : 你坚持你的300秒不需要修改 : 请问如果你的数据库管理员把连接超时配置了240秒,你怎么办
slowactionslowaction
Sun Jul 12 12:10:26 2026 · #152
这个网站只有在发表成功之后再次修改才会显示有修改 因为敏感词没发成功,修改敏感词后发表,并不会显示修改 所以显示修改和敏感词没关系
【 在 ylh1969 的大作中提到: 】 : 敏感词太多,经过多次编辑才能发出来。
slowactionslowaction
Sun Jul 12 12:14:02 2026 · #153
你前面不是还斩钉截铁的说不需要配置么,300秒包打天下? 这个那个一堆理论,极简设计之类的 管理员通知,他改了配置到240秒 你去和他说你的极简理论吧 你知不知道你非常可笑
【 在 ylh1969 的大作中提到: 】 : 加上配置没有难度,加上就是,不是讨论的根本节点。
slowactionslowaction
Sun Jul 12 12:15:22 2026 · #154
蠢才 变量不能用全大写
【 在 ylh1969 的大作中提到: 】 : 加上配置没有难度,加上就是,不是讨论的根本节点。 : FREE_LINK_TIMEOUT=300。 : 程序里加一个getenv()配个参数即可以了
ylh1969没谱
Sun Jul 12 12:16:34 2026 · #155
发帖失败,所以只能先少写点,一点点加。后编辑的失败后可以再改,所以后续内容很慢。 发回复时只能少写。被拒绝就不好弄了。
【 在 slowaction 的大作中提到: 】 : 这个网站只有在发表成功之后再次修改才会显示有修改 : 因为敏感词没发成功,修改敏感词后发表,并不会显示修改 : 所以显示修改和敏感词没关系
ylh1969没谱
Sun Jul 12 12:17:25 2026 · #156
语法没有这个规定。 我们讨论的是方法,我又没让你用我的程序。你如果写程序随便你怎么写。
【 在 slowaction 的大作中提到: 】 : 蠢才 : 变量不能用全大写
ylh1969没谱
Sun Jul 12 12:18:54 2026 · #157
他会征求我的意见。 你认为需要加上就是了,有那么难吗? 我们讨论的是算法,你说的问题存在,都是细枝末节,不难改吧? 值得争论的问题是,要不要保留部分活连接,实践来看,不需要。这能省很多事。我懒。
【 在 slowaction 的大作中提到: 】 : 你前面不是还斩钉截铁的说不需要配置么,300秒包打天下? : 这个那个一堆理论,极简设计之类的 : 管理员通知,他改了配置到240秒
slowactionslowaction
Sun Jul 12 12:27:22 2026 · #158
好的设计就是兼容各种场景的 如果是可以配置的,现场改个配置文件,有时候都不需要重新启动程序 你写死了,就需要从新编译发版本, 这事超级麻烦 你前面几十篇帖子信誓旦旦不需要修改, 不是难不难, 而是你太自以为是,这么明显的问题都看不到 那些大道理从你嘴里说出来,让人笑掉大牙
【 在 ylh1969 的大作中提到: 】 : 他会征求我的意见。 : 你认为需要加上就是了,有那么难吗?
slowactionslowaction
Sun Jul 12 12:28:23 2026 · #159
贴段程序,本来想露脸,屁股漏出来了
【 在 ylh1969 的大作中提到: 】 : 语法没有这个规定。 : 我们讨论的是方法,我又没让你用我的程序。你如果写程序随便你怎么写。
slowactionslowaction
Sun Jul 12 12:29:50 2026 · #160
你连个超时时间需要配置这事都搞不明白 没资格讨论其他问题
【 在 ylh1969 的大作中提到: 】 : 他会征求我的意见。 : 你认为需要加上就是了,有那么难吗? : 我们讨论的是算法,你说的问题存在,都是细枝末节,不难改吧?
slowactionslowaction
Sun Jul 12 12:31:20 2026 · #161
你前面还说实践看来不需要改超时时间呢 你的实践经验看起来毛用没有
【 在 ylh1969 的大作中提到: 】 : 他会征求我的意见。 : 你认为需要加上就是了,有那么难吗? : 我们讨论的是算法,你说的问题存在,都是细枝末节,不难改吧?
ylh1969没谱
Sun Jul 12 12:32:59 2026 · #162
告诉大家,连接池健康管理,原来可以这么简单。 你也可以这么简单不足之处你自己改就行了,保留活连接的事,可以省,省了就减少很多麻烦。 核心是保死还是保活的争论,其他都是细枝末节。
【 在 slowaction 的大作中提到: 】 : 贴段程序,本来想露脸,屁股漏出来了
slowactionslowaction
Sun Jul 12 12:38:14 2026 · #163
你想告诉别人的东西 所有的连接池都有,并且是可配置的,那个变量还是小写
【 在 ylh1969 的大作中提到: 】 : 告诉大家,连接池健康管理,原来可以这么简单。 : 你也可以这么简单不足之处你自己改就行了,保留活连接的事,可以省,省了就减少很多麻烦。 : 核心是保死还是保活的争论,其他都是细枝末节。
ylh1969没谱
Sun Jul 12 12:43:31 2026 · #164
只能说明,我的连接池健康管理策略,连你这么轴的都能看懂。 想加啥你就加呗,想用啥变量你就用,我又没让你用我的程序。 我的是极简,你看看还能简化啥。至于需要加啥,你自己加。
【 在 slowaction 的大作中提到: 】 : 你想告诉别人的东西 : 所有的连接池都有,并且是可配置的,那个变量还是小写
ylh1969没谱
Sun Jul 12 12:50:10 2026 · #165
我想告诉别人的东西,是可以减什么。至于有人认为不能减的,就不减。这没什么好说的。
【 在 slowaction 的大作中提到: 】 : 你想告诉别人的东西 : 所有的连接池都有,并且是可配置的,那个变量还是小写
slowactionslowaction
Sun Jul 12 12:50:16 2026 · #166
咋咋呼呼贴段程序 结果全是毛病, 连超时时间需要配置这事都嘴硬几十篇帖子说300秒不用修改,还极简设计。 太丢人了。 全部c程序员的档次都被你拉低了
【 在 ylh1969 的大作中提到: 】 : 只能说明,我的连接池健康管理策略,连你这么轴的都能看懂。 : 想加啥你就加呗,想用啥变量你就用,我又没让你用我的程序。 : 我的是极简,你看看还能简化啥。至于需要加啥,你自己加。
ylh1969没谱
Sun Jul 12 12:51:46 2026 · #167
现在的教育,落后十年了,就你这思维模式
【 在 slowaction 的大作中提到: 】 : 咋咋呼呼贴段程序 : 结果全是毛病, : 连超时时间需要配置这事都嘴硬几十篇帖子说300秒不用修改,还极简设计。
slowactionslowaction
Sun Jul 12 12:51:56 2026 · #168
可以减什么? 减了超时了时间可以配置 结果现场数据库改配置,自己傻了吧
【 在 ylh1969 的大作中提到: 】 : 我想告诉别人的东西,是可以减什么。至于有人认为不能减的,就不减。这没什么好说的。
slowactionslowaction
Sun Jul 12 12:55:26 2026 · #169
你从头到尾贴程序 举场景 讲理论 没有一次站的住脚 就剩无病呻吟了。 鲁迅有个小说里有个九斤老太太,你应该去看一下 那是你的前辈
【 在 ylh1969 的大作中提到: 】 : 现在的教育,落后十年了,就你这思维模式
slowactionslowaction
Sun Jul 12 12:58:41 2026 · #170
因为你一直嘴硬说不需要改,还极简 年纪大了,水平还这么差,就别谈具体问题了 空对空的扯点纯理论就行了
【 在 ylh1969 的大作中提到: 】 : 想加啥你就加,这点事跟祥林嫂似的说八百遍。 : 关键是不保活,可以大幅度提高数据库的效率。
slowactionslowaction
Sun Jul 12 13:01:01 2026 · #171
你早这么讨论多好 夸夸其谈没人在意的 自己非要帖段代码,暴露出自己特别菜,自讨苦吃
【 在 ylh1969 的大作中提到: 】 : 讨论没有意义了。 : 告诉大家,连接池健康管理,原来可以这么简单。 : 你也可以这么简单不足之处你自己改就行了,保留活连接的事,可以省,省了就减少很多麻烦。
ylh1969没谱
Sun Jul 12 17:25:50 2026 · #172
140楼你还没有回答。
【 在 slowaction 的大作中提到: 】 : 你早这么讨论多好 : 夸夸其谈没人在意的 : 自己非要帖段代码,暴露出自己特别菜,自讨苦吃
ylh1969没谱
Fri Jul 17 09:59:06 2026 · #173
实践中没有这种情况,事物要发展的看。最开始的做法是长连接,业务终端永远连接,不管有没有业务。这种情况怎么可能数据库 主动超时断联!发展到连接池技术,为什么要凭空搞这个!哪个理论要求的,哪个老师教你的! 后来因为长连接数据库负担太大,竞争过于激烈,导致崩溃风险过高,这样就产生了约束控制数据库并行连接数的需求,搞了连接池。你连 连接池约束并行度的功能都不知道,回去改改你的教案吧。 这个算法用了10年也没人提出修改超时参数的需求。如果谁用了这个方法,需要改,那他就加上,这根本不是技术问题,你拿这个揪住不放,显得你高明是不是?恰恰看出你思维逻辑混乱,毫无实践经验,抓不住注意矛盾,解决不了问题的关键。是一只抓不住耗子的宠物猫。
【 在 slowaction 的大作中提到: 】 : 可以减什么? : 减了超时了时间可以配置 : 结果现场数据库改配置,自己傻了吧
ylh1969没谱
Fri Jul 17 10:22:16 2026 · #174
这段代码就是说明,这个参数不需要改,经过多年实践,没有改的必要。 设计数据库超时断联就是因为有太多连接占着茅坑不拉屎。 连接池已经解决这个问题,所以这个设置不必要。哪个DBA提出来要设置,不能随便来吧,必须要讨论的吧,讨论结果需要满足方方面面的需求吧?我方需求6分钟以上,某方说必须240秒,他要说出理由,如果必要,我改程序。这一切都由项目协调机构决定。
【 在 slowaction 的大作中提到: 】 : 你早这么讨论多好 : 夸夸其谈没人在意的 : 自己非要帖段代码,暴露出自己特别菜,自讨苦吃
slowactionslowaction
Fri Jul 17 11:16:37 2026 · #175
你在这里长篇大论两配置参数写死的合理性 只能证明 1.你老了 2.现实生活没人搭理你
【 在 ylh1969 的大作中提到: 】 : 这段代码就是说明,这个参数不需要改,经过多年实践,没有改的必要。 : 设计数据库超时断联就是因为有太多连接占着茅坑不拉屎。 : 连接池已经解决这个问题,所以这个设置不必要。哪个DBA提出来要设置,不能随便来吧,必须要讨论的吧,讨论结果需要满足方方面面的需求吧?我方需求6分钟以上,某方说必须240秒,他要说出理由,如果必要,我改程序。这一切都由项目协调机构决定。
ylh1969没谱
Fri Jul 17 13:44:52 2026 · #176
你坚持要保留一定数量的活连接而且不用心跳,请问如果你的数据库管理员把连接超时配置了240秒,你怎么办? 回答不了了吧!
【 在 slowaction 的大作中提到: 】 : 你坚持你的300秒不需要修改 : 请问如果你的数据库管理员把连接超时配置了240秒,你怎么办
ylh1969没谱
Fri Jul 17 14:07:17 2026 · #177
没人搭理是因为现在的年轻人太可怜了,饭碗都保不住,谁会去关心大并发数据库怎么处理呢?一般是这需求都是大企业,搞大项目的,都是在经济上行企业蓬勃发展,业务猛烈扩张才有的压力和动力去研究。 我是恢复高考第一届的计算机专业,上学时有工资,因为成绩好中途还涨了一次工资。毕业回单位后,到了信息部门,就我是科班出身,老员工都是其他专业改行的。所以到单位就是挑大梁的,做什么工作领导说了算,怎么干我说了算。那个年代企业信息应用都采用文件系统,不信任数据库。当年就一个DBASE算是数据库,还是单用户的。谈不上并行计算,大并发应用。是我开创了多用户关系数据库系统在大并发业务中的应用,在我们企业。 现在的年轻人,毕业了有人要吗?就业了还不知道哪天丢饭碗,哪有心思考虑什么大并发的问题。这类问题哪里轮得到他们考虑。
【 在 slowaction 的大作中提到: 】 : 你在这里长篇大论两配置参数写死的合理性 : 只能证明 : 1.你老了
slowactionslowaction
Fri Jul 17 14:11:14 2026 · #178
改配置然后动态更新,这是软件的基本功能 看看你这没见过世面的样子
【 在 ylh1969 的大作中提到: 】 : 你坚持要保留一定数量的活连接而且不用心跳,请问如果你的数据库管理员把连接超时配置了240秒,你怎么办? : 回答不了了吧!
ylh1969没谱
Fri Jul 17 14:13:49 2026 · #179
我就问你,你的活连接没心跳怎么办!改哪个配置?加心跳?你回答我的问题,少说废话。
【 在 slowaction 的大作中提到: 】 : 改配置然后动态更新,这是软件的基本功能 : 看看你这没见过世面的样子
slowactionslowaction
Fri Jul 17 14:34:38 2026 · #180
你问这个问题和数据库管理员改了超时时间没有任何关系 原来怎么运行,现在怎么运行
【 在 ylh1969 的大作中提到: 】 : 我就问你,你的活连接没心跳怎么办!改哪个配置?加心跳?你回答我的问题,少说废话。
slowactionslowaction
Fri Jul 17 14:34:52 2026 · #181
你问这个问题和数据库管理员改了超时时间没有任何关系 原来怎么运行,现在怎么运行
【 在 ylh1969 的大作中提到: 】 : 我就问你,你的活连接没心跳怎么办!改哪个配置?加心跳?你回答我的问题,少说废话。
ylh1969没谱
Fri Jul 17 15:43:12 2026 · #182
那么你的活连接不做心跳会死。 做心跳会拖累数据库,而且管理复杂,故障率高数据库忙时会误判。误判会出大麻烦。 最可行的就是取消活连接,这就是我的方案,参数是否可变这不是关键问题。这个贴提出的核心问题就是不要活连接。
【 在 slowaction 的大作中提到: 】 : 你问这个问题和数据库管理员改了超时时间没有任何关系 : 原来怎么运行,现在怎么运行
slowactionslowaction
Fri Jul 17 15:46:17 2026 · #183
他死不死和有没有心跳有什么关系? 你从头到尾一脑袋浆糊, 碰到问题就东拉西扯 从来不能聚焦一个问题
【 在 ylh1969 的大作中提到: 】 : 那么你的活连接不做心跳会死。 : 做心跳会拖累数据库,而且管理复杂,故障率高数据库忙时会误判。
ylh1969没谱
Fri Jul 17 15:48:53 2026 · #184
你的活连接不做心跳数据库一断就死了呀,再取用就完蛋了呀,哪有可靠性可言! 只要你有活连接就不存在数据库240秒断联(这个断联会打死你的活连接)的需要啊 既然你不需要凭什么我需要!既然我不需要,凭什么我要改变这个参数!172楼已经解释清楚了,你还反复提,有意思吗?你能不能考虑问题全面一点呀,这么密切的逻辑关联你还需要念叨1000遍吗? 我不需要改这个参数,你需要你改,没有技术难度,我说几遍了?
【 在 slowaction 的大作中提到: 】 : 他死不死和有没有心跳有什么关系? : 你从头到尾一脑袋浆糊, : 碰到问题就东拉西扯
slowactionslowaction
Fri Jul 17 16:26:04 2026 · #185
240秒是数据库的配置 你管的着么 用什么机制也不能保证数据库断了他不死 你连这些机制都是干什么用的都不知道 祥林嫂一样说你40年前如何如何
【 在 ylh1969 的大作中提到: 】 : 你的活连接不做心跳数据库一断就死了呀,再取用就完蛋了呀,哪有可靠性可言! : 只要你有活连接就不存在数据库240秒断联(这个断联会打死你的活连接)的需要啊 既然你不需要凭什么我需要!既然我不需要,凭什么我要改变这个参数!172楼已经解释清楚了,你还反复提,有意思吗?你能不能考虑问题全面一点呀,这么密切的逻辑关联你还需要念叨1000遍吗? : 我不需要改这个参数,你需要你改,没有技术难度,我说几遍了?
ylh1969没谱
Fri Jul 17 16:42:37 2026 · #186
数据库断了,把应用打死,谁能这么操作,搞破坏吗? 你的连接池都解决不了这个问题,你会容忍DBA胡作非为吗?不经批准擅改数据库配置,导致系统瘫痪,等着开除呢!
【 在 slowaction 的大作中提到: 】 : 240秒是数据库的配置 : 你管的着么 : 用什么机制也不能保证数据库断了他不死
slowactionslowaction
Fri Jul 17 16:42:40 2026 · #187
服务端配置240秒,你配置300秒, 你这机制就是废的,你认为不需要改? 老糊涂了吧
【 在 ylh1969 的大作中提到: 】 : 你的活连接不做心跳数据库一断就死了呀,再取用就完蛋了呀,哪有可靠性可言! : 只要你有活连接就不存在数据库240秒断联(这个断联会打死你的活连接)的需要啊 既然你不需要凭什么我需要!既然我不需要,凭什么我要改变这个参数!172楼已经解释清楚了,你还反复提,有意思吗?你能不能考虑问题全面一点呀,这么密切的逻辑关联你还需要念叨1000遍吗? : 我不需要改这个参数,你需要你改,没有技术难度,我说几遍了?
ylh1969没谱
Fri Jul 17 16:43:33 2026 · #188
那你的活连接呢?不一样死吗? 你的方案没有比我更优啊! 我的会自愈呀,再过60秒我也会关闭这些连接的。 就算不幸这个连接被取用,在操作失败后归还即可,以系统故障归还的连接会被关闭。继续取用可以重新打开。 你理解什么叫自愈了吗?
【 在 slowaction 的大作中提到: 】 : 服务端配置240秒,你配置300秒, : 你这机制就是废的,你认为不需要改? : 老糊涂了吧
ylh1969没谱
Fri Jul 17 16:44:54 2026 · #189
不经批准做这个配置者,开除。 是你小糊涂了吧!
【 在 slowaction 的大作中提到: 】 : 服务端配置240秒,你配置300秒, : 你这机制就是废的,你认为不需要改? : 老糊涂了吧
slowactionslowaction
Fri Jul 17 16:47:35 2026 · #190
数据库断了,应用就要死? 那是做应用的蠢 应用必须处理链接失效的情况, 没有机制可以保证连接一定有效
【 在 ylh1969 的大作中提到: 】 : 数据库断了,把应用打死,谁能这么操作,搞破坏吗? : 你的连接池都解决不了这个问题,你会容忍DBA胡作非为吗?不经批准擅改数据库配置,导致系统瘫痪,等着开除呢!
slowactionslowaction
Fri Jul 17 16:48:51 2026 · #191
我可以改120秒, 你改不了吧?
【 在 ylh1969 的大作中提到: 】 : 那你的活连接呢?不一样死吗? : 你的方案没有比我更优啊!
ylh1969没谱
Fri Jul 17 16:52:38 2026 · #192
那你120秒死。
【 在 slowaction 的大作中提到: 】 : 我可以改120秒, : 你改不了吧?
slowactionslowaction
Fri Jul 17 16:53:08 2026 · #193
要不怎么说你一脑袋浆糊呢 参数可以自适应,发现外部环境变了 首先可以自己调整参数 其次可以日志报警 而你,写死了300秒,什么也不会干 只知道讲你上大学涨工资之类的废话
【 在 ylh1969 的大作中提到: 】 : 不经批准做这个配置者,开除。 : 是你小糊涂了吧!
ylh1969没谱
Fri Jul 17 16:53:57 2026 · #194
看来你没有搞过大系统,你敢改,找开除呢!
【 在 slowaction 的大作中提到: 】 : 我可以改120秒, : 你改不了吧?
ylh1969没谱
Fri Jul 17 16:55:42 2026 · #195
我的会自愈呀,300秒内我也会关闭这些连接的。 就算不幸这时间内这个连接被取用,在操作失败后归还即可,以系统故障归还的连接会被关闭。继续取用可以重新打开。 你理解什么叫自愈了吗? 你违规私改数据库,结果就是系统断断续续出故障,日志里当然会有,很快就会抓住元凶,绳之以法。
【 在 slowaction 的大作中提到: 】 : 要不怎么说你一脑袋浆糊呢 : 参数可以自适应,发现外部环境变了 : 首先可以自己调整参数
slowactionslowaction
Fri Jul 17 16:58:52 2026 · #196
技术上讲不出道理, 扯别的没用 你在原单位倚老卖老别人可能不搭理你 网上可没人惯着你 如果数据库超时时间配置了,240 连接池超时时间必须比240少 你哪年的大学生也没用
【 在 ylh1969 的大作中提到: 】 : 看来你没有搞过大系统,你敢改,找开除呢!
ylh1969没谱
Fri Jul 17 17:00:57 2026 · #197
194楼就是技术上的道理,我的系统瘫不了,你的系统没救。
【 在 slowaction 的大作中提到: 】 : 技术上讲不出道理, : 扯别的没用 : 你在原单位倚老卖老别人可能不搭理你
slowactionslowaction
Fri Jul 17 17:02:22 2026 · #198
想不明白为什么服务端240,为什么客户端不能配置300? 去医院看看吧
【 在 ylh1969 的大作中提到: 】 : 我的会自愈呀,300秒内我也会关闭这些连接的。 : 就算不幸这时间内这个连接被取用,在操作失败后归还即可,以系统故障归还的连接会被关闭。继续取用可以重新打开。 : 你理解什么叫自愈了吗?
ylh1969没谱
Fri Jul 17 17:03:41 2026 · #199
客户端配置300,就不允许数据库配小于360,懂吗! 我这边是生产运营系统,DBA是维护支持系统,它得听我的,懂吗,我不会下改240断联的命令,没人敢瞎改!瞎改有日志很快会被抓住,承担责任。
【 在 slowaction 的大作中提到: 】 : 想不明白为什么服务端240,为什么客户端不能配置300? : 去医院看看吧
slowactionslowaction
Fri Jul 17 17:07:45 2026 · #200
别人的连接池允许,数据库爱怎么配怎么配 如果有别的业务也用这个数据库,可以允许他改配置 你的实现不行? 所以你和你的连接池都会被淘汰
【 在 ylh1969 的大作中提到: 】 : 客户端配置300,就不允许数据库配小于360,懂吗!
slowactionslowaction
Fri Jul 17 17:09:01 2026 · #201
那你回你们单位去讲你的连接池吧 互联网没人惯着你
【 在 ylh1969 的大作中提到: 】 : 客户端配置300,就不允许数据库配小于360,懂吗! : 我这边是生产运营系统,DBA是维护支持系统,它得听我的,懂吗,我不会下改240断联的命令,没人敢瞎改!
ylh1969没谱
Fri Jul 17 17:11:10 2026 · #202
不是我们单位,是所有的生产单位都不会发生这种事,你纯粹是闭门造车,胡思乱想。洗洗睡吧。
【 在 slowaction 的大作中提到: 】 : 那你回你们单位去讲你的连接池吧 : 互联网没人惯着你
ylh1969没谱
Fri Jul 17 17:14:42 2026 · #203
当然,项目投产前必然要讲。现在运行着呢,好多年了,那个程序就是告诉大家,这个参数根本没必要改。
【 在 slowaction 的大作中提到: 】 : 那你回你们单位去讲你的连接池吧 : 互联网没人惯着你
ylh1969没谱
Fri Jul 17 17:17:33 2026 · #204
加个配置有那么难吗!说一遍就行了,有必要反复说吗? 我没让谁用我的程序,只说了一个算法,连接池健康管理,可以不留活口,简单,可靠,鲁棒性高,性能高。谁做连接池,可以采用这种算法。具体的,自己写程序,有问题,问我。 你说的问题,加个配置即可。
【 在 slowaction 的大作中提到: 】 : 别人的连接池允许,数据库爱怎么配怎么配 : 如果有别的业务也用这个数据库,可以允许他改配置 : 你的实现不行?
slowactionslowaction
Fri Jul 17 17:17:52 2026 · #205
UPDRS量表你可以做一下,能通过再来讨论技术问题吧
【 在 ylh1969 的大作中提到: 】 : 不是我们单位,是所有的生产单位都不会发生这种事,你纯粹是闭门造车,胡思乱想。洗洗睡吧。
slowactionslowaction
Fri Jul 17 17:19:14 2026 · #206
不难, 但是你的设计不行
【 在 ylh1969 的大作中提到: 】 : 加个配置有那么难吗!说一遍就行了,有必要反复说吗?
slowactionslowaction
Fri Jul 17 17:23:16 2026 · #207
你不一直说300秒不用改么?
【 在 ylh1969 的大作中提到: 】 : 加个配置有那么难吗!说一遍就行了,有必要反复说吗? : 我没让谁用我的程序,只说了一个算法,连接池健康管理,可以不留活口,简单,可靠,鲁棒性高。谁做连接池,可以采用这种算法。具体的,自己写程序,有问题,问我。 : 你说的问题,加个配置即可。
ylh1969没谱
Fri Jul 17 17:24:57 2026 · #208
我是不用改,谁需要谁改,程序自己写。这不是技术问题。
【 在 slowaction 的大作中提到: 】 : 你不一直说300秒不用改么?
ylh1969没谱
Fri Jul 17 17:29:15 2026 · #209
你不懂主要矛盾和次要矛盾。 我的方案怎么说也比你的方案强,你遇到数据库断联就死透了,我的遇到不合适的配置,晃晃悠悠还可以走,如果系统繁忙,根本就不会出问题。问题也可以很快被找出。见194楼。 你的逻辑能力太差,找不到问题的关键点,在不是问题的问题上反复纠缠。真担心你的学生毕业了会干啥。你们现在不学逻辑课了吗?我们那会儿是有逻辑课的。
【 在 slowaction 的大作中提到: 】 : 不难, : 但是你的设计不行
ylh1969没谱
Fri Jul 17 19:21:32 2026 · #210
你看194楼吧。我就是不改也死不了,忙没事,闲也没事,就在那个间隙里会有事,而且很快恢复。自愈嘛。 你弄得保活连接才会死。 我知道了,你们学校实验室的DBA是大拿,你们得听他的。我们企业DBA就是个服务生,得听生产部门的。这使这个实现有了差别。不要紧哦,我说的是算法,你照这个流程做就可以,具体实现你自己按你的需求来就行。 在学生实习中你可以提要求,变量不能全大写,超时要配置,做不好你可以扣分不让他毕业。 我的DBA搞事情我也可以开除他。 所以我们没有什么好争论的。 大家呢,思考一下连接池健康管理,是保活呢还是一个活口不留。
【 在 slowaction 的大作中提到: 】 : 别人的连接池允许,数据库爱怎么配怎么配 : 如果有别的业务也用这个数据库,可以允许他改配置 : 你的实现不行?
ylh1969没谱
Fri Jul 17 19:42:13 2026 · #211
发信人: xiechuanhust (mavina), 信区: CProgramming 标 题: Re: 一个提高数据库连接效率的方法-自愈式连接池 发信站: 水木社区 (Fri Jul 10 21:44:09 2026), 站内 第一次听说把连接池当并发控制用的,囧 另外,玩了很多年数据库,库的负载中纯连接池相关的占比很低呀 这位也是你学生吧,还是你学弟,一个老师教的? 连用连接池控制并发度都不知道? 连接池还可以用来负载均衡和容错。 这都是20年前使用的技术,你们落后时代至少20年了。 回去改教案吧。
【 在 slowaction 的大作中提到: 】 : 这都哪跟哪 : 限制连接数和连接池没有一毛钱的关系
ylh1969没谱
Fri Jul 17 22:31:24 2026 · #212
不是现用现开,第一次用开,之后就不用开了。 以后不开也不关,就是连接池的标准功能。
【 在 nikezhang 的大作中提到: 】 : 如果你还是现用现开,那和玩具写法的每次select之前先connect,select之后再close也没什么区别,根本不能叫做连接池
slowactionslowaction
Sat Jul 18 09:16:22 2026 · #213
技术上你已经被淘汰了 只能靠回忆20年前找点安慰
【 在 ylh1969 的大作中提到: 】 : 你看194楼吧。我就是不改也死不了,忙没事,闲也没事,就在那个间隙里会有事,而且很快恢复。自愈嘛。 : 你弄得保活连接才会死。 : 我知道了,你们学校实验室的DBA是大拿,你们得听他的。我们企业DBA就是个服务生,得听生产部门的。这使这个实现有了差别。不要紧哦,我说的是算法,你照这个流程做就可以,具体实现你自己按你的需求来就行。
fairyazfairysky
Mon Jul 20 12:54:04 2026 · #214
应该说tcp诞生后就有了
【 在 ylh1969 的大作中提到: 】 : 20年前就用了。 : 【 在 fairyaz 的大作中提到: 】 : : 10年前都有这机制了! : FROM 221.221.55.* [北京–丰台区 联通]
博主关闭了所有页面的评论