网易首页 > 网易号 > 正文 申请入驻

CPU跑不满,API却超时?连接池耗尽诊断指南

0
分享至

周三凌晨三点,手机报警又响了。一条简单的用户信息查询接口,响应时间从往日的4毫秒飙升到了4秒。匆忙登录服务器,PostgreSQL的CPU使用率低得可笑,慢查询日志干干净净,索引也没任何问题。你对着屏幕开始怀疑一切——代码没改过,流量也没暴涨,数据库像没事人一样,可用户那边已经超时一片。这不是数据库的故障,而是PgBouncer连接池被彻底耗尽了。在几乎所有重度使用Postgres的生产系统里,这类事故的发生频率远超慢查询,但误判率也高得离谱,很多人第一反应总是去查SQL、加索引,结果越绕越远。

下面就以一次典型的线上排查为线,把连接池耗尽这件事彻底拆开,不卖关子,直接上干货。

第一条:问题不在数据库,在“过路费”上。 PgBouncer作为连接池中间件,把成百上千的应用客户端映射到少量的物理数据库后端连接上,这本是一套优雅的省钱设计。可只要有任何因素让事务占用连接的时间超过预期——比如一次突然变慢的下游接口调用、等锁迟迟不释放、或者一个没有及时提交的游离事务——这套机制立刻从通道变成收费站。原本几十毫秒能完成的小查询,会因为前面积压的等待队列被拖成几秒,而且它们根本还轮不到进入Postgres,连执行计划都看不到。一旦看到客户端的等待数在涨、服务端活跃连接数死死顶在池子大小上限,就可以断定:池子满了,后面的所有请求都在排队,再快的查询也得乖乖等着。

第二条:池化模式选错,翻车率高到离谱。 多数团队在生产环境会选择事务池化模式,因为它让连接在事务提交的瞬间立即归还,用少量后台连接就能支撑海量客户端。听起来弹性十足,于是不少人把Postgres自身的连接数上限当作真正的瓶颈,完全不关心应用侧到底能同时维持多少个事务。真正的天花板不是Postgres的max_connections,而是你那套应用在同一时刻能保持多少未提交的事务。事务池化的另一面极其阴险:它让连接的释放看起来是自动的,于是任何需要在会话级别保持的东西——自定义搜索路径、预编译语句、临时表——都会变得极不稳定,出了问题定位起来很痛苦。至于最激进的语句级池化,直接打破了多语句事务的语义,基本只适合纯只读分析场景。而最保守的会话池化呢?一条客户端长连接死死绑定一个后端,池子有多大就只能接多少并发,稍微一压就满,属于把钱花得最不值的那种。

第三条:别凭感觉猜,两条命令直接照出病灶。 登录PgBouncer的管理端口,跑一句SHOW POOLS; 就能看到所有池子的实时状态。目光盯住两个数字:cl_waitingsv_active。一旦等待客户端数在持续爬升,而活跃服务端连接数死死贴在池子配置的上限,铁证如山,所有后端槽位都被占满,客户端正排着长队。紧接着要做的就是跑到Postgres自身去查,到底是谁把那些槽位绑架了。十次里有八次,你会看到某个事务在等待一次跨网络的HTTP调用完成,或者在等一把从某次在线迁移遗留下来的锁。这种查找几乎不需要分析慢查询,纯粹的连接占用就能把整个系统卡死。

第四条:头号通缉犯——空闲事务泄露。 典型的反模式是这样:应用开启一个事务,做了一次读取,然后调了一个外部发货接口,等接口返回了才提交。在这整段等待时间里,那条数据库连接对于其他请求而言完全不可用,相当于占着茅坑不拉屎。在压力一上来的时候,单这一种写法造成的事故占比,远远超过任何流量峰值。ORM框架里这种行为尤其容易隐蔽,很多人甚至意识不到某段代码已经处在事务上下文中。所以排查时请盯紧pg_stat_activity里状态为idle in transaction的连接,超过几秒的大概率就是祸首。别幻想这是数据库的优化问题,这就是代码行为问题。

第五条:调池子大小别拍脑袋,用利特尔法则打底。 一个很实诚的估算公式:需要的连接数 = 请求到达率 × 平均事务耗时。但它最要命的坑在于,你要按尾部延迟来算,而不是平均值。一次慢查询或者一次突然的网络重试,就能让整个估算扭曲得不成样子。所以不要一看到等待就把池子开大,更多后端连接意味着更大的内存开销和更强的锁竞争,完全不是免费的午餐。合理的策略是先通过应用侧的改造消除不必要的空闲事务,再结合事务耗时分布去定池子大小,最后留出足够的余量应付流量毛刺。再往上堆连接数,就像给一个漏水的桶拼命加水,治标不治本。

下一次你看见数据库CPU闲得很、可用户端却在超时的时候,不要再去翻慢查询日志了。先看一眼PgBouncer的池子状态,大概率会发现,数据库什么事也没有,全是连接调度在背锅。把诊断顺序改过来,处理这类事故的时间能缩到原来的十分之一。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
哈登打了17年了,他能实现10000助攻的伟大成就吗?

哈登打了17年了,他能实现10000助攻的伟大成就吗?

大西体育
2026-07-17 12:30:53
很轻松!王楚钦/孙颖莎横扫林高远/刘炜珊晋级全锦赛八强!

很轻松!王楚钦/孙颖莎横扫林高远/刘炜珊晋级全锦赛八强!

篮球资讯达人
2026-07-17 12:57:56
亲子心理学:如果你对孩子越来越好,越来越热情,越来越包容,越来越顺从,越来越宠溺,那么孩子一定会成为天底下最不珍惜你的那个人

亲子心理学:如果你对孩子越来越好,越来越热情,越来越包容,越来越顺从,越来越宠溺,那么孩子一定会成为天底下最不珍惜你的那个人

心理观察局
2026-07-17 06:42:16
1979 年苏联手握重兵却不援越南,勃列日涅夫临终道出旁观关键缘由

1979 年苏联手握重兵却不援越南,勃列日涅夫临终道出旁观关键缘由

唠叨说历史
2026-07-16 15:40:07
邹市明亏光2亿真相追踪!原本他可以不亏钱的,只想开个小拳击馆,无奈妻子是“冉总”

邹市明亏光2亿真相追踪!原本他可以不亏钱的,只想开个小拳击馆,无奈妻子是“冉总”

火山詩话
2026-07-15 15:23:09
“ 教师带薪脱产读博6年,答辩前脑出血倒在宿舍,妻子申请工亡被拒”,甘肃当地回应:刘某某已结业并办理离校、退宿,系自行租赁宿舍滞留

“ 教师带薪脱产读博6年,答辩前脑出血倒在宿舍,妻子申请工亡被拒”,甘肃当地回应:刘某某已结业并办理离校、退宿,系自行租赁宿舍滞留

大风新闻
2026-07-17 12:12:08
向太曝施南生临终前内幕,插管住院一周就离世,澄清徐克没孩子

向太曝施南生临终前内幕,插管住院一周就离世,澄清徐克没孩子

娱乐E君
2026-07-17 10:57:21
腾格尔现状:住北京别墅,66岁彻底戒酒,把老来得子儿子宠成宝

腾格尔现状:住北京别墅,66岁彻底戒酒,把老来得子儿子宠成宝

秋姐居
2026-07-16 19:19:23
李诚儒评论区已沦陷!网友的评论,条条戳中他的肺管子

李诚儒评论区已沦陷!网友的评论,条条戳中他的肺管子

情感大头说说
2026-07-17 08:23:43
曼联新帝星世界杯零出场原因揭晓!图赫尔不满其态度,赛后总独行

曼联新帝星世界杯零出场原因揭晓!图赫尔不满其态度,赛后总独行

罗米的曼联博客
2026-07-17 12:19:31
丘成桐采访再提某院士“逆徒”表现恶劣,韦神导师北大田刚躺枪

丘成桐采访再提某院士“逆徒”表现恶劣,韦神导师北大田刚躺枪

趣笔谈
2026-07-17 10:02:38
世界杯最大败笔!英格兰弃用皇马王牌!图赫尔脸都被打肿了

世界杯最大败笔!英格兰弃用皇马王牌!图赫尔脸都被打肿了

奶盖熊本熊
2026-07-17 02:14:58
10万入场费的“换妻”盛宴:记者冒死暗访,组织者3年狂赚2亿

10万入场费的“换妻”盛宴:记者冒死暗访,组织者3年狂赚2亿

说点事
2026-07-16 11:29:11
上次交手6-1,西班牙仍是最近一支对阿根廷单场进6球的球队

上次交手6-1,西班牙仍是最近一支对阿根廷单场进6球的球队

懂球帝
2026-07-17 03:18:03
46场板凳换来终身饭票:巴特尔用三年零一天 把NBA规则卡得死死的

46场板凳换来终身饭票:巴特尔用三年零一天 把NBA规则卡得死死的

刘哥谈体育
2026-07-16 09:56:08
乌克兰:悔到肠子青,当年卖给中国三架"废铁",今成大国重器?

乌克兰:悔到肠子青,当年卖给中国三架"废铁",今成大国重器?

掠影后有感
2026-07-17 10:00:51
机场偶遇郭富城,全家九口人出发去旅行8个月大的小女儿也带上了

机场偶遇郭富城,全家九口人出发去旅行8个月大的小女儿也带上了

动物奇奇怪怪
2026-07-17 01:56:24
A股:上午跳水到3807收长阴,种种迹象表明,A股C浪调整要开始了吗?

A股:上午跳水到3807收长阴,种种迹象表明,A股C浪调整要开始了吗?

趋势清风侠
2026-07-17 11:30:50
电影业已溃败如斯,你们还有心情针对一部观众愿意给面儿的电影?

电影业已溃败如斯,你们还有心情针对一部观众愿意给面儿的电影?

细雨中的呼喊
2026-07-16 13:49:43
不出意外,下半年开始,大米、面粉、食用油将迎来行业新一轮洗牌

不出意外,下半年开始,大米、面粉、食用油将迎来行业新一轮洗牌

慕名而来只为你
2026-07-16 22:45:14
2026-07-17 14:59:00
爬虫饲养员
爬虫饲养员
业余养了只叫“龙虾”的AI爬虫,主业是给互联网打工。
279文章数 51关注度
往期回顾 全部

科技要闻

Kimi K3突然登顶!价格也涨到了美国档

头条要闻

媒体:菲律宾疯狂挑衅后 被中方发布报告扒下了"底裤"

头条要闻

媒体:菲律宾疯狂挑衅后 被中方发布报告扒下了"底裤"

体育要闻

世界杯将颁发冠军戒指 FIFA:将美国传统引入足坛

娱乐要闻

深扒邹市明的情史!爱得太卑微

财经要闻

创业板指半日跌4.71% 超4300股下挫

汽车要闻

小鹏MONA L03上市为什么选在慕尼黑?

态度原创

健康
手机
旅游
教育
本地

中风为何总在激动、用力时到来?

手机要闻

Counterpoint:印度2026Q2智能手机出货创6年来同期最大跌幅

旅游要闻

2026“亲情中华·中国寻根之旅”夏令营走进自贡富顺

教育要闻

“我女儿第一次坐飞机,叫两声怎么了?”低素质家长带娃出行被嘲

本地新闻

人生必去清单:那达慕大会开嗨!

无障碍浏览 进入关怀版