8. Bulk 写入吞吐上不去

  • 现象:每秒只能写几千条,CPU 也没打满
  •  根因:
    • Bulk 包太小(如 1MB),咱可不能小气
    • refresh_interval=1s 太频繁
    • 线程池队列满(thread_pool.bulk.rejected
  • 解决:
    • Bulk 大小调至 5–15MB
    • 日志场景设 refresh_interval=30s
    • 监控线程池拒绝数
  •  “你拿勺子往水库里倒水,还怪水库装得慢。”

9. 深分页(from > 10000)被拒绝

  • 现象:日志中"Result window is too large, from + size must be less than or equal to: [10000]"
  • 根因:ES 默认限制 index.max_result_window=10000,防内存爆炸
  •  解决:
    • 用 search_after 替代 from/size
    • 或滚动索引 + 时间范围过滤
  • “你想翻到第 10 万页?ES 说:‘先想想你的内存答不答应。’”数据库在这方面也需要考虑哈

10. 升级后插件不兼容,集群起不来

  •  现象:升级 ES 7.17 → 8.0 后,IK 插件报错,节点无法加入
  • 根因:ES 插件强绑定版本,必须用对应版本的 IK
  • 解决:
    • 升级前查插件兼容矩阵
    • 用 Docker 镜像预测试
  • “你升了 ES,忘了插件还在用‘上古版本’——这叫‘带着 Windows 98 上高铁’。”

终极防御

风险 防御措施
OOM 堆 ≤ 30GB + 熔断器 + 监控 fielddata
慢查询 超时 + 聚合限桶 + 禁用深分页
磁盘爆 水位告警 + ILM 自动删除
脑裂 7.x+ 或 6.x 设 minimum_master_nodes
数据丢失 translog.durability: request
写入慢 Bulk 调大 + refresh_interval=30s
分词失效 记得 _reload_search_analyzers

ES 的哲学
     它不会阻止你犯错,每个男人女人(放心女人也不会拉下)都会犯错,但会让你为每个错误付出“集群挂掉”的代价

    所以,敬畏配置,尊重原理,监控先行。嗯…… 接下来你们说吧,舞台交给大家~

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐