当前位置: 首页 > java >正文

ES 在大查询场景下导致 GC 频繁,如何定位和解决?

一、定位GC问题的关键步骤

  1. 检查JVM配置
# 查看Elasticsearch节点JVM配置
GET /_nodes/jvm

重点关注heap_max_in_bytes和垃圾回收器类型(G1/CMS)

  1. 分析GC日志
# 启用GC日志(需重启集群)
-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m
  1. 监控内存压力
# 实时监控内存使用
GET /_nodes/stats/jvm?filter_path=**.heap_used_percent

二、常见优化方案

  1. JVM参数优化
# 调整G1GC参数(适用于JDK11+)
-XX:+UseG1GC
-XX:G1ReservePercent=25
-XX:InitiatingHeapOccupancyPercent=30
-XX:MaxGCPauseMillis=200
  1. 查询优化建议
// 避免深度分页
GET /index/_search
{"query": {...},"size": 100,"sort": "_doc",  // 无评分排序"track_total_hits": false
}
  1. 索引结构调整
# 设置doc_values优化字段存储
PUT /index/_mapping
{"properties": {"large_field": {"type": "keyword","doc_values": true}}
}

三、高级调优措施

  1. 缓存策略调整
indices.requests.cache.size: 5%
indices.queries.cache.size: 5%
indices.fielddata.cache.size: 30%
  1. 线程池优化
thread_pool.search.size: 4  # 建议等于CPU核心数
thread_pool.search.queue_size: 1000
  1. GC监控命令示例
# 实时监控GC状态(需节点安装JDK)
jstat -gcutil <pid> 1000 10

四、配套优化建议

  1. 使用Search Profiler分析查询瓶颈
GET /index/_profile
{"query": {...}
}
  1. 对于超大聚合查询,建议:
  • 启用execution_hint: map
  • 设置合理size参数
  • 使用composite aggregation代替terms aggregation
  1. 集群层面优化:
PUT /_cluster/settings
{"transient": {"search.default_pre_filter_shard_size": 128}
}

建议优先从查询优化和JVM参数调整入手,同时结合GC日志分析具体GC类型(Young GC/Full GC)和停顿时间。若频繁出现Full GC,需重点检查内存泄漏或大对象分配问题。

http://www.xdnf.cn/news/9220.html

相关文章:

  • webstorm调试vite工程(后端开发人员版)
  • 从十进制到二进制:深入理解定点数与浮点数表示
  • 高压单端探头,如何实现大比例的衰减?
  • 【NLP基础知识系列课程-Tokenizer的前世今生第二课】NLP 中的 Tokenizer 技术发展史
  • 【Vue3】生命周期 hook函数 toRef
  • 通义智文开源QwenLong-L1: 迈向长上下文大推理模型的强化学习
  • 浅解Vue 数据可视化开发建议与速度优化
  • 【华为云物联网】如何实现在 MQTT.fx 上模拟数据间隔上传一次,并按设定系数变动数据
  • HTML 表单与输入:基础语法到核心应用全解析
  • UBUNTU20.04 配置以QT界面程序代替系统界面启动,以及如何在tty模式下以linuxfb形式启动
  • Halcon 霍夫变换
  • 获取页面上当前激活(获得焦点)的元素
  • Frequent values/gcd区间
  • 行为型:中介者模式
  • C++11 中引入的`final` 关键字作用。
  • ImageMagick 是默认使用 CPU 来处理图像,也具备利用 GPU 加速的潜力
  • 数据库的事务(Transaction)
  • 路桥隧养护决策系统
  • atomic.Value 中存储的数据是否会被 GC
  • vue展示修改前后对比,并显示修改标注diff
  • 四足机器人环境监测系统相关问题
  • Mac 每日磁盘写入量异常高
  • AI如何颠覆财务预测?——用Python打造自动化智能分析系统
  • 基于Java,SpringBoot,Vue,UniAPP宠物洗护医疗喂养预约服务商城小程序管理系统设计
  • SQL Server 简介和与其它数据库对比
  • 联想小新笔记本电脑静电问题导致无法开机/充电的解决方案
  • 远程控制技术全面解析:找到适合你的最佳方案
  • 北京大学肖臻老师《区块链技术与应用》公开课:03-BTC-数据结构
  • 计算机网络的性能指标
  • 网络协议:[0-RTT 认证 ]