news 2026/7/8 6:52:41

【ES】[教程]----第六章:Elasticsearch 性能优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【ES】[教程]----第六章:Elasticsearch 性能优化

文章目录

  • 优化总结
  • 一、硬件选择
  • 二、分片策略
    • 1. 合理设置分片数
    • 2. 路由选择
  • 三、写入速度优化
      • 3.1 批量数据提交
      • 3.2 优化存储设备
      • 3.3 合理使用合并
      • 3.4 减少Refresh次数
      • 3.5 加大Flush设置
      • 3.6 减少副本数量
  • 四、内存设置
  • 五、重要配置

优化总结

  1. 采用SSD固态硬盘
  2. 合理分配分片数量(非越多越好)
  3. 按业务调整刷盘时机
  4. 内存不超过32G
  5. 采用批量插入

一、硬件选择

  1. 使用SSD固态硬盘
  2. 避免外挂存储(如NFS)

二、分片策略

1. 合理设置分片数

  • 控制单分片容量不超过ES最大JVM堆空间(通常≤32G),如500G索引约需16个分片
  • 分片数不超过节点数的3倍(避免单节点多分片导致故障风险)
  • 数量关系参考:节点数≤主分片数×(副本数+1)

2. 路由选择

  • 分片计算方式:shard = hash(routing) % number_of_primary_shards(routing默认为文档ID,可自定义如用户ID)
  • 不带路由查询:请求全部分片,协调节点汇总排序后返回
  • 带路由查询(如userid):可直接定位数据所在分片

三、写入速度优化

3.1 批量数据提交

使用_bulk API,单次批量建议5-15MB(约1000-5000条文档)

3.2 优化存储设备

优先使用SSD

3.3 合理使用合并

  • 设置index.merge.policy.max_merged_segment(如5GB),避免过大段导致IO峰值
  • 减少手动触发合并(_forcemerge)

3.4 减少Refresh次数

调大index.refresh_interval(如30秒或1分钟),减少刷新频率(需接受数据可见延迟)

3.5 加大Flush设置

调大index.translog.flush_threshold_size(如1GB)或index.translog.sync_interval,减少Flush次数(注意:未刷盘时节点故障可能丢失数据)

3.6 减少副本数量

临时场景(如全量导入)可将副本数设为0(number_of_replicas: 0),完成后恢复

四、内存设置

  • 建议-Xms-Xmx值相同,为物理内存的50%且≤31GB(非越大越好)

五、重要配置

参数名参数值说明
cluster.nameelasticsearch集群名称,建议与数据相关,同网段同名节点可自动发现
node.namenode-1集群内唯一节点名,可设为主机名(如node.name:${HOSTNAME}
node.mastertrue是否为候选主节点(需选举确定)
node.datatrue是否存储索引数据(数据操作在此类节点完成)
index.number_of_shards1默认索引分片数,可创建时调整(数据量小时设为1效率高)
index.number_of_replicas1默认索引副本数,副本越多可用性越好但写入同步开销越大
transport.tcp.compresstrue节点间数据传输是否压缩(默认不压缩)
discovery.zen.minimum_master_nodes1选举主节点所需最少候选节点数,合理值为(master_eligible_nodes/2)+1(避免脑裂)
discovery.zen.ping.timeout3s节点发现时Ping超时时间,网络差时可调大(防止误判节点状态)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 9:29:04

【PCB制作】二极管选型资料收集

SS14 (肖特基二极管) 1N5819W B5819WS 1N4148 普通二极管 A7是普通二极管,只要是生产二极管的厂家一般都有销售的。 A7可以用M7(SMA封装)或1N4007(DO-41封装)代替。 1N4148 是开关二极管,耐压…

作者头像 李华