【优化】APM es索引频繁创建删除问题分析

46 阅读2分钟

1. # 现状

平时有比较频繁的任务批量创建和删除index,导致集群的health时常不稳定, 上周调高了集群的分片平衡速度和线程数量,但效果不是很明显。

es集群环境如下:(其中数据节点配置 32C/64G/1T)




  1. 分析

  1. 数据量分析

该集群共5个数据节点,查看磁盘数据占用情况:

总共数据量295.9GB,集群数据量并不大。


  1. 分片分析

共有794个分片,其中有部分分片如 ks-apm8_metrics-percentile-20250101、ks-apm8_metrics-percentile-20250102设置不均衡(1分片1副本),建议调整分片配置。

共140个索引,只有部分索引(13个索引)的数据数据量稍微大,大部分索引的数据量并不大。


  1. 分析和建议

794个分片,140个索引,总共数据量295.9GB,平均每个分片数据量 373mb,每个索引数据量2gb左右。

整体上分析,该集群数据量不大。

已经进行过集群的分片平衡速度和线程数量的调整,暂时先不再调整集群配置参数。

频繁创建删除索引引起集群状态异常,可能需要从使用场景上分析。

分析:

  1. 频繁进行索引创建和删除,会导致写入放大,即实际写入磁盘的数据量远大于用户实际写入的数据量,这会占用更多的磁盘I/O资源,影响性能。

  2. 频繁删除索引会导致索引碎片化(因为Elasticsearch不会立即从磁盘上移除已删除的文档),影响搜索性能。

  3. 频繁创建和删除索引,会增大master节点的管理压力和磁盘io压力,可能导致短暂的集群状态异常(集群进行索引创建、分片管理和回收需要一定的时间)

建议:

  1. 对于频繁创建的索引,一般都是临时业务需要,使用完毕后先暂时close。
  2. 对于需要删除的索引,建议惰性删除,比如通过定时任务在业务低峰期删除索引数据,可以减小对Elasticsearch性能的即时影响。