news 2026/6/27 10:17:58

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
记录一次接口访问超时问题定位

问题描述

提示:这里描述项目中遇到的问题:

项目用的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,总等待次数不断增加,。
很显然就是数据库连接数被用满了。

解决方案:

找到原因就好处理了,降低并发数,调高数据库连接数上限,很快就把总等待次数降下来了,前端访问也正常了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/27 10:17:17

三指拖拽神器:如何在Windows上实现macOS级触控体验的终极指南

三指拖拽神器:如何在Windows上实现macOS级触控体验的终极指南 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFinger…

作者头像 李华
网站建设 2026/6/27 10:17:08

ArchivePasswordTestTool:基于7zip引擎的高效并行密码测试架构深度解析

ArchivePasswordTestTool:基于7zip引擎的高效并行密码测试架构深度解析 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 在数据安…

作者头像 李华
网站建设 2026/6/27 10:13:22

Windows三指拖拽终极指南:免费实现macOS般流畅触控体验

Windows三指拖拽终极指南:免费实现macOS般流畅触控体验 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersDragO…

作者头像 李华
网站建设 2026/6/27 10:10:24

AI大模型接口中转站生产环境真实测评

五大主流平台核心能力全维度横向PK我们从稳定性、模型储备数量、协议适配能力、企业管理配套、价格体系五个核心维度做全面横向对比,所有数据均来自各平台公开官方文档与我们团队实测验证结果。其中词元之河(TokenRiver.ai)表现最为突出,稳定性SLA达到99…

作者头像 李华
网站建设 2026/6/27 10:10:15

第一章Netty,使用FileChannel进行大文件读写

基于前文对 FileChannel 核心特性(阻塞模式、内存映射、零拷贝)的解析,处理‌大文件‌(通常指几百 MB 到 GB 级别)时,传统的逐字节或小块 Buffer 读写效率极低。 针对大文件场景,FileChannel 提供了两种最高效的方案:‌内存映射(Memory-Mapped Files)‌ 和 ‌直接传…

作者头像 李华