以下是Elasticsearch(ES)的 核心配置项性能优化措施,涵盖硬件、系统、ES配置、索引设计等关键方面,帮助提升集群稳定性与查询性能:


一、硬件与系统层优化

  1. 内存分配

    • 堆内存(Heap Size)
      • 设置为物理内存的 50%,但不超过 32GB(超过 32GB 会降低 JVM 指针压缩效率)。
      • 例:64GB 内存的机器 → -Xms31g -Xmx31g(留内存给系统缓存)。
    • 禁用 Swap
      • 设置 bootstrap.memory_lock: trueelasticsearch.yml),避免内存交换至磁盘。
  2. 磁盘选择

    • 必用 SSD:尤其是热数据节点,IOPS 性能直接影响写入/查询速度。
    • RAID 0:提升磁盘吞吐量(ES 自身副本机制保证数据安全)。
  3. CPU 与网络

    • 多核处理器:ES 重度依赖 CPU(分词、聚合等操作)。
    • 万兆网络:节点间通信、数据恢复速度依赖网络带宽。
  4. 文件系统与内核参数

    • 最大文件描述符
      # /etc/security/limits.conf
      elasticsearch - nofile 65535
      
    • 虚拟内存映射数
      sysctl -w vm.max_map_count=262144
      

二、Elasticsearch 核心配置

# elasticsearch.yml
# 1. 集群名称(所有节点一致)
cluster.name: my-es-cluster# 2. 节点角色分配(明确分工)
node.roles: [ data, ingest ]   # 数据+预处理节点
node.roles: [ master ]         # 专用 Master 节点(至少3个)
node.roles: [ ml, remote_cluster_client ] # 机器学习/跨集群访问# 3. 网络与发现
network.host: 192.168.1.10     # 绑定内网IP
discovery.seed_hosts: ["node1-ip", "node2-ip", "node3-ip"] # 种子节点
cluster.initial_master_nodes: ["master-node1", "master-node2"] # 首次启动指定 Master# 4. 安全配置(免费版基础安全)
xpack.security.enabled: true

三、索引设计优化

  1. 分片(Shard)策略

    • 分片大小:单个分片 20GB-50GB 为佳(最大不超过 100GB)。
    • 分片数量
      • 总数 = 节点数 × 最大负载分片数(通常 1CPU 核 ≈ 1-2 个分片负载)。
      • 避免单个索引分片过多(如超过 1000)增加 Master 压力。
    • 示例
      PUT /logs-2023
      {"settings": {"number_of_shards": 5,     // 主分片"number_of_replicas": 1    // 每个主分片的副本数}
      }
      
  2. 冷热架构(Hot-Warm)

    • 热节点:SSD + 高配 CPU,存放新写入数据。
    • 温节点:HDD + 大容量,存放旧数据。
    • 通过 ILM(Index Lifecycle Management)自动迁移:
      PUT _ilm/policy/logs_policy
      {"phases": {"hot": { "actions": { "rollover": { "max_size": "50GB" } } },"warm": { "actions": { "allocate": { "require": { "data": "warm" } } } }}
      }
      
  3. Mapping 优化

    • 禁用不必要的字段
      "mapping": { "enabled": false }   // 如 _source(谨慎关闭,影响重索引)
      
    • 选择合适类型
      • keyword 代替 text(无需分词时)。
      • dateintegerstring 更高效。
    • 嵌套对象慎重nested 类型开销大,改用 flattened 或冗余设计。

四、写入性能优化

  1. 批量写入(Bulk API)

    • 单次批量 5-15MB 为佳(过大导致集群内存压力)。
    • 并行发送:多线程提交 Bulk 请求。
  2. 调整 Refresh 间隔

    PUT /logs-2023/_settings
    {"index.refresh_interval": "30s"   // 默认1s,加大减少段生成频率
    }
    
  3. 关闭副本(写入高峰期)

    PUT /logs-2023/_settings
    {"index.number_of_replicas": 0
    }
    

    完成后恢复副本

  4. 使用自动生成 ID:避免 ES 校验自定义 ID 唯一性。


五、查询性能优化

  1. 分页深度限制

    • 避免 from + size 翻页(深度分页消耗内存)。
    • 改用 search_after + PIT(Point in Time)。
  2. 缓存利用

    • 分片查询缓存index.requests.cache.enable: true
    • 聚合结果缓存size: 0 + aggs 时可缓存。
  3. 优化查询语句

    • 使用 Filter Context:非评分查询用 filter(可缓存)。
    • 避免 wildcard 模糊查询(改用 keyword 分词或分词器优化)。
    • 聚合时设置 execution_hint: map(小范围聚合更快)。
  4. 预索引优化

    • 将计算转移到写入阶段(如存储聚合结果)。

六、监控与维护

  1. 关键监控指标

    • CPU / 内存 / 磁盘 IO
    • 集群状态:green/yellow/red
    • 索引延迟:indexing_latency, search_latency
  2. 定期清理

    • 使用 Curator 删除旧索引:
      actions:1:action: delete_indicesfilters: [{ "kind": "pattern", "value": "logs-*", "exclude": false }]
      
  3. 避免大查询压垮集群

    • 设置查询超时:?timeout=30s
    • 限制聚合桶数量:terminate_aftercomposite 聚合分页。

七、高级调优

  • 线程池调整:监控 thread_pool 拒绝情况,调整队列大小(如 thread_pool.write.queue_size: 1000)。
  • GC 优化:使用 G1GC 垃圾回收器(JDK 11+ 默认),关注 gc_log 避免频繁 Full GC。
  • Translog 优化
    index.translog.durability: async       // 异步刷盘(风险:宕机丢数据)
    index.translog.sync_interval: 120s     // 默认5s
    

实战建议

  1. 上线前进行 压力测试(如 Rally 工具)。
  2. 生产环境开启 慢查询日志index.search.slowlog.threshold)。
  3. 版本升级时验证 兼容性(尤其大版本跳跃)。

根据业务场景(高写入/复杂查询/实时分析)选择性调整上述配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97205.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97205.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/97205.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【谷歌浏览器】浏览器实用自用版——谷歌浏览器(Google Chrome)离线纯净版安装 官方版无任何捆绑及广告 【离线安装谷歌浏览器】

经常上网的朋友们肯定深有体会:如今不少浏览器动不动就弹广告、塞插件,用起来简直是折磨。面对这些“全家桶”式捆绑,大家都渴望能找到一款干净、简洁、无打扰的浏览器——这时候,Google Chrome(谷歌浏览器&#xff09…

2025年渗透测试面试题总结-39(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 3. SAST(静态应用安全测试) 4. IAST(交互式应用安全测试) …

网站测试报告:WEB应用反CSRF的本质与防御机制

CSRF (跨站请求伪造) 本质: 攻击者诱骗已登录目标站点的用户,在不知情的情况下提交一个恶意请求。该请求利用用户浏览器中已存储的认证信息(如Cookie、Session),以该用户的身份执行未授权的操作(如修改密码…

2025年9月计算机二级C++语言程序设计——选择题打卡Day10

备考计算机二级 C 程序设计考试&#xff0c;选择题是不容忽视的重要部分。 今天为大家带来 10 道难点选择题&#xff0c;聚焦继承、多态等核心难点&#xff0c;助力提升解题精度。 1、有如下程序&#xff1a; #include<iostream> using namespace std; class Base { pub…

Formdata表单数据提交

前言&#xff1a;在表单数据提交中&#xff0c;常常除了字符串拼接的方式传给后端&#xff0c;一般可能还需要使用Fromdata的格式包装所要提交的表单数据传递。常用场景&#xff1a;表单数据提交一、Formdata的优势使用 FormData 主要是因为它有两个独特优势&#xff1a;能轻松…

React Native 初体验

前言 最近公司需要移植一个应用到 iOS 端&#xff0c;本来想要尝试 uniapp 的新架构 uniapp-x 的&#xff0c;折腾两天放弃了&#xff0c;选择了 React Native。 原因&#xff1a; HbuilderX 中的 uniapp-x 模版过于臃肿&#xff0c;夹杂很多不需要的东西&#xff08;可能是…

自动驾驶中的传感器技术36——Lidar(11)

本章节重点介绍和FMCWOPA Lidar强相关的硅光技术。 1、硅光技术概述&#xff08;Silicon Photonics&#xff09; 硅光技术主要是用在光通信中&#xff0c;利用硅作为光学介质&#xff0c;通过光传输和处理数据。与依赖电子进行数据传输的传统电子电路不同&#xff0c;硅光子学…

MapStruct用法和实践

一、MapStruct 用法1. 嵌套对象深度映射&#xff08;Deep Mapping&#xff09;// 源对象 public class User {private Address address;// getter/setter }public class Address {private String city;private String street; }// 目标对象 public class UserDTO {private Stri…

设计模式相关面试题

写在前面 &#x1f525;我把后端Java面试题做了一个汇总&#xff0c;有兴趣大家可以看看&#xff01;这里&#x1f449; ⭐️在反复复习面试题时&#xff0c;我发现不同资料的解释五花八门&#xff0c;容易造成概念混淆。尤其是很多总结性的文章和视频&#xff0c;要么冗长难…

访问者设计模式

访问者设计模式是一种行为模式&#xff0c;允许您向现有对象结构添加新作&#xff0c;而无需修改其类。 它通过允许您将算法与其作的对象分开来实现这一点。 它在以下情况下特别有用&#xff1a; 您有一个复杂的对象结构&#xff08;如 AST、文档或 UI 元素&#xff09;&#x…

Linux_用 `ps` 按进程名过滤线程,以及用 `pkill` 按进程名安全杀进程

用 ps 按进程名过滤线程&#xff0c;以及用 pkill 按进程名安全杀进程摘要&#xff1a; 过滤线程信息&#xff1a;教你用 ps -C、pgrepps 等多种姿势&#xff0c;既精准又避免误杀。按名字杀进程&#xff1a;用 pkill 一把梭&#xff0c;优雅还是强杀随你选&#xff0c;附带“先…

关于国产 RAC 和分布式研讨

本次研讨核心目标是围绕崖山 DB、达梦 DB、GBASE三款国产数据库&#xff0c;以及数据库内核开发吕工程师的分享&#xff0c;深入了解共享集群 RAC 的开发技术。但实际效果未达预期&#xff0c;参会者多围绕 “共享集群与分布式应用场景” 泛泛而谈&#xff0c;缺乏深度技术拆解…

传输层协议介绍

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档文章目录前言一、TCP协议介绍二、TCP报文格式三、TCP三次握手四、TCP四次挥手五、UDP协议介绍六、常见协议及其端口七、TCP与UDP的不同总结前言提示&#xff1a;这里可以添加本…

Vibe Coding 概念提出者 AndrejKarpathy 谈强化学习。

在预训练时代&#xff0c;关键在于互联网文本。你最需要的是一大批量、多样化且高质量的互联网文档&#xff0c;供模型从中学习。在监督微调&#xff08;SFT&#xff09;时代&#xff0c;核心则是对话数据。人们雇佣合同工人为问题撰写答案&#xff0c;类似于你在 Stack Overfl…

OSI模型和TCP/IP模型区别是什么

问题OSI模型和TCP/IP模型区别是什么我的回答OSI和TCP/IP这两个协议栈有几个主要区别&#xff1a;首先&#xff0c;层次结构不同。OSI是七层模型&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP是四层模型&#xff1a;数据链路层、网络层、传…

ros2与gazebo harmonic机械臂仿真项目Moveit2YoloObb的优化

文章目录 关于项目RVIZ控制Gazebo Harmonic仿真机械臂GraphExecuter创建流程并通过Yolo算法抓取螺栓 关于项目 本文介绍ros2与gazebo harmonic机械臂仿真项目Moveit2YoloObb优化的内容&#xff0c;具体的代码细节就不赘述了&#xff0c;主要还是演示效果&#xff0c;包括RVIZ控…

Linux 系统调优与CPU-IO-网络内核参数调优

1. Linux系统调优1.1 安装工具包在开始监控前&#xff0c;需要确保系统已安装以下工具包&#xff0c;它们是后续操作的基础&#xff1a;sysstat&#xff1a;包含 mpstat、iostat、sar 等核心统计工具iotop&#xff1a;专门监控磁盘 I/O 的进程级工具nethogs&#xff1a;按进程查…

laravel学习并连接mysql数据库,给本地vue项目提供接口

下载laravel laravel下载地址phpstudy_pro\WWW\laravel.env文件 DB_CONNECTIONmysql DB_HOST127.0.0.1 DB_PORT3306 DB_DATABASEclgl //你的数据库名称 DB_USERNAMEroot //你的账号 DB_PASSWORDroot //你的密码安装 Laravel CORS 包 composer require fruitcake/laravel-c…

Mybatis 与 Springboot 集成过程详解

Mybatis 与 Springboot 集成过程详解一. 核心概念与优势二.Mybatis 核心类简介1.MybatisAutoConfiguration2.MapperScans3.MapperScannerRegistrar4.MapperFactoryBean5.Configuration6.MapperRegistry7.MapperProxy 与 MapperProxyFactory7.1核心定位与职责7.22. ​​MapperPr…

prometheus alertmanager 对接飞书

alertmanager 直接配置 飞书 的 webhook &#xff0c;发现并不满足飞书接口的 json 格式。报错如下levelerror ts2025-08-28T04:57:02.734Z callerdispatch.go:310 componentdispatcher msg"Notify for alerts failed" num_alerts23 err"prometheusalert-webhoo…