连载中 19/20

陷阱集:十个真实事故现场

2026-08-20 · 1095 阅读 · 0 评论 · 0 赞

事故合集,一次点名

前面十八篇把知识铺开了,这篇反过来:只讲事故。十个真实场景,每个给三句话——现场什么样、根因是什么、怎么修。建议当面试题库用,一条比一条眼熟。

十个现场

现场根因修法
对 text 用 term 查整句,零结果term 找词条,text 存的是碎片整句走 match,精确走 keyword 子字段
价格排序把 10 排在 9 前面动态 mapping 把数字字符串猜成 text显式 mapping 加 reindex(第 5 篇)
翻深页报 Result window too largefrom 加 size 成本线性放大search_after 或限页(第 10 篇)
写入后搜不到,以为丢数据refresh 一秒一次,近实时设计读链路等一秒或按 ID 直查(第 6 篇)
几十个小分片吃光内存每分片一个 Lucene 实例单分片 10-50GB,rollover 滚动(第 14 篇)
单节点集群常年 yellow副本没地方放本地环境副本归零(第 13 篇)
对 text 开 fielddata 后 OOM碎词条全装进堆内存永远用 keyword 子字段聚合(第 11 篇)
wildcard 星号打头拖垮集群倒排失效,遍历词典ngram 分词或改产品形态(第 17 篇)
MySQL 与 ES 数据悄悄漂移双写或同步链路静默失败定时对账加局部修复(第 15 篇)
列表页接口越来越慢_source 整包返回几千字详情_source 裁剪只取列表字段(第 17 篇)

事故背后的三个规律

十条事故摆在一起,能提炼出三条规律。规律一:一半的坑是「拿 MySQL 的直觉用 ES」——以为实时、以为行存、以为 LIKE 能用,世界观没切换(第 1-6 篇全部背锅)。规律二:三成的坑在建库那一刻埋下——mapping 和分片数都是定死不悔改的,建库多想十分钟,线上少熬十个夜。规律三:剩下的坑缺的是校验——数据漂移靠对账发现,慢查询靠慢日志发现,副本异常靠三色灯发现,没有监控的故障都是用户先发现的。

老王把这十条打印出来贴在工位,新人入职先对着读一遍,能少走他两个月的弯路。

小结

十个现场一句话总结:查不对先查 mapping,查得慢先查查询形态,查不准先查同步链路。事故不可怕,同一类事故踩两次才可怕。

20 篇走到最后一篇。下一篇收官:一张作战地图串起整个系列,外加十条上线检查清单

503

10 年全栈工程师 · 503咖啡馆主理人

#Elasticsearch#陷阱#事故排查#经验#避坑

评论 (0)

相关推荐

连载中 12/20

排查四件套:jstack、jmap、jstat、jcmd 的实战分工

jstack 看线程在干什么,jmap 看堆里装了什么,jstat 看运行时在变什么,jcmd 是统一入口。四把刀各管一段,配合着用没有查不动的现场。

#jstack#jmap#jstat#jcmd#排查工具
2026-09-16 · 3 阅读 · 0 评论 · 0 赞
连载中 11/20

GC 日志:把回收过程翻译成人话

一行 GC 日志里塞着七种信息:谁触发的、收了哪、停了多久、活了哪些。加上 -Xlog 配置,再加上日志分析工具,GC 不再是只能盯监控曲线的黑盒。

#GC日志#Xlog#日志分析#GC监控#Full GC排查
2026-09-16 · 13 阅读 · 0 评论 · 0 赞
连载中 10/20

ZGC:亚毫秒停顿是怎么炼成的

百 G 大堆停顿不到一毫秒,靠的是把搬家全部挪到并发阶段——着色指针让引用自带状态,读屏障让搬运中的对象依然可访问。代价是吞吐与内存,收益是停顿与堆大小解耦。

#ZGC#着色指针#读屏障#亚毫秒停顿#分代ZGC
2026-09-15 · 8 阅读 · 0 评论 · 0 赞