尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

记录一次接口访问超时问题定位

发布时间:2026/9/15 14:06:27

资讯中心
01
ARTICLE

记录一次接口访问超时问题定位

记录一次接口访问超时问题定位
问题描述提示这里描述项目中遇到的问题项目用的GO语言会启动一个耗时大概十几分钟的扫描任务会将一个很大的压缩文件不断地解压读取。读取出来的数据会存入缓存中然后代码中会访问数据库将数据库数据与缓存数据进行对比识别出目标数据。为了提高效率启用了大量的协程去访问数据库。然后就出现了奇怪的现象前端访问后端接口查询数据时接口返回非常慢经常会超时。定位过程首先就是看后端日志发现请求确实很快就到了后端但后端迟迟没有返回结果。怀疑是在什么地方阻塞了。于是在被调用的方法中加日志很快就发现了是请求数据库那一行的代码卡住了等待了很长的时间。这时候就怀疑是别的地方启动的协程太多去访问数据库导致数据库连接数不够用。于是直接进入数据库查询连接数使用情况发现数据库的连接数并没有用光。数据库连接数有1024个。接着又想到我们代码的配置文件中实际配置的是32个实际最多使用32个现在就得考虑是不是这32个被用完了。直接加了下面的打印stats:db.Stats()logutil.Logger().Infof(PrintDbState OpenConnections: %d (活跃: %d, 空闲: %d) WaitCount: %d (总等待次数) WaitDuration: %v (累计等待时间) MaxIdleClosed: %d (因空闲超时关闭) ,stats.OpenConnections,stats.InUse,stats.Idle,stats.WaitCount,stats.WaitDuration,stats.MaxIdleClosed)很快就从日志里面看出了活跃数量是32空闲0总等待次数不断增加,。很显然就是数据库连接数被用满了。解决方案找到原因就好处理了降低并发数调高数据库连接数上限很快就把总等待次数降下来了前端访问也正常了。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。