news 2026/8/26 1:36:53

记一次线上接口超时排查:从日志到GC再到慢SQL的全过程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
记一次线上接口超时排查:从日志到GC再到慢SQL的全过程

上周三下午,同事在群里甩了一张监控截图,某个订单查询接口P99延迟突然从80ms飙到3s+,偶尔还直接504。

当时第一反应是——谁又上了什么骚操作。

先看日志,别瞎猜

直接去ELK捞日志,按traceId串了一下调用链,发现大部分耗时都卡在一个查订单列表的RPC调用上。

这个接口平时QPS不高,大概200左右,平时响应很稳,突然炸了就很反常。

// 大致逻辑,简化版 List<Order> orders = orderMapper.selectByUserId(userId);

SQL本身不复杂,就是按user_id查,加了索引,理论上不该慢。

看监控,排除网络抖动

先看了下网络层面的监控,丢包率正常,TCP重传也没异常。

然后看下游数据库的连接池状态,HikariCP的active连接数已经打满了,wait线程一堆。

到这里基本可以确认——不是网络问题,是数据库那边扛不住了

慢SQL日志里捞线索

去数据库侧看了下慢查询日志,果然有一堆类似的SQL,执行时间从1s到5s不等。

但诡异的是,这条SQL在测试环境跑得飞快,explain出来也走的索引,type是ref,key_len也正常。

这时候有个同事提了一嘴:是不是数据量变了?

去线上库一查,那个user_id对应的订单数据量大概有12万条,而且没有分页,直接全量select。

SELECT * FROM t_order WHERE user_id = 10086;

12万条,没limit,全量拉回来。

之前这个用户是个普通用户,数据量小,所以一直没暴露。这次是个大客户的测试账号,数据量一上来就炸了。

根因

说白了就是:

  • 代码里没做分页,默认全量查
  • 测试数据量太小,没覆盖到大用户场景
  • 连接池被打满后,其他正常请求也被拖死了
怎么修的

改动不大,主要就两件事:

  1. 接口加上分页参数,默认page_size=20,最大不超过100
  2. 对全量查询的场景做了兜底,超过阈值直接拒绝并告警
if (count > MAX_ALLOWED) { log.warn("user_id={} order count={} exceed limit", userId, count); throw new BizException("数据量过大,请使用筛选条件"); }

另外顺手把select *改成了指定字段,减少网络传输量。

几个教训
  • 测试数据要贴近真实分布,不能全是几条数据的理想场景
  • 分页是基本功,任何列表查询都应该有分页兜底
  • 连接池打满是最危险的信号之一,一个慢请求能把整个服务拖垮
  • 监控告警要配好,P99超阈值就报警,别等用户来反馈
最后

这种问题其实不算难排查,关键是要有一个清晰的排查路径:

日志 → 调用链 → 监控 → 慢SQL → 数据分布

一步一步缩小范围,别一上来就怀疑框架、怀疑JVM、怀疑玄学。

大部分线上问题,根因都很朴素。

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

单相感应电动机原理与维修:从启动方式到电容选配

前几天接到一个老客户的电话&#xff0c;说车间里一台排风机不转了&#xff0c;电机嗡嗡响、机身发烫&#xff0c;按钮都按冒烟了也没转起来。我赶到现场&#xff0c;拆开接线盒一量电容&#xff0c;容量已经从标称的30微法掉到了8微法&#xff0c;换了电容&#xff0c;风机马上…

作者头像 李华
网站建设 2026/8/26 1:33:26

CMake实战指南:从构建系统生成器到跨平台项目高效管理

看到"CMake the Most of Software Development"这个标题&#xff0c;先别急着说我玩谐音梗。CMake 这个单词本来就是从 make 延伸出来的&#xff0c;而 make the most of 的意思是"充分利用"——把这两个意思叠在一起&#xff0c;其实正好就是我写了十多年…

作者头像 李华
网站建设 2026/8/26 1:31:15

Vim宏录制:从原理到实战,掌握q记录器提升文本编辑效率

1. 项目概述&#xff1a;为什么说Vim的q记录器是效率神器&#xff1f;如果你用过Vim&#xff0c;大概率经历过这样的场景&#xff1a;面对一段需要重复几十次的格式化操作&#xff0c;比如给每一行末尾加上分号&#xff0c;或者把一堆无序的列表项调整成整齐的表格。你可能会下…

作者头像 李华
网站建设 2026/8/26 1:30:02

主流 Agent 框架横向对比:LangChain、LangGraph、AutoGen 与 CrewAI 怎么选

这里写自定义目录标题欢迎使用Markdown编辑器一、框架选型为什么这么难二、LangChain&#xff1a;生态最丰富的"瑞士军刀"三、LangGraph&#xff1a;面向生产的有状态工作流四、AutoGen&#xff1a;多 Agent 对话协作的先行者五、CrewAI&#xff1a;角色化团队的极简…

作者头像 李华
网站建设 2026/8/26 1:29:14

从视觉情报分析赛题看CV技术实战:目标检测、多目标跟踪与事件推理

1. 项目概述&#xff1a;从一道赛题看情报分析的实战化转型“华为杯”中国研究生数学建模竞赛&#xff0c;在圈内一直被视为是检验学生将理论知识转化为解决复杂实际问题能力的试金石。第十六届的C题“视觉情报信息分析”&#xff0c;在我看来&#xff0c;它不仅仅是一道赛题&a…

作者头像 李华
网站建设 2026/8/26 1:26:58

教学用角膜地形图仪,为什么需要Scheimpflug断层?

系列一 价格革命教学用角膜地形图仪&#xff0c;为什么需要Scheimpflug断层&#xff1f;眼视光专业实训中心采购角膜地形图&#xff0c;预算动辄百万级——但设备选型逻辑与临床科室不同&#xff1a;教学设备不仅要"能用"&#xff0c;更要"能教"。学生需要…

作者头像 李华