1. # 现状
平时有比较频繁的任务批量创建和删除index,导致集群的health时常不稳定, 上周调高了集群的分片平衡速度和线程数量,但效果不是很明显。
es集群环境如下:(其中数据节点配置 32C/64G/1T)
-
分析
-
数据量分析
该集群共5个数据节点,查看磁盘数据占用情况:
总共数据量295.9GB,集群数据量并不大。
-
分片分析
共有794个分片,其中有部分分片如 ks-apm8_metrics-percentile-20250101、ks-apm8_metrics-percentile-20250102设置不均衡(1分片1副本),建议调整分片配置。
共140个索引,只有部分索引(13个索引)的数据数据量稍微大,大部分索引的数据量并不大。
-
分析和建议
794个分片,140个索引,总共数据量295.9GB,平均每个分片数据量 373mb,每个索引数据量2gb左右。
整体上分析,该集群数据量不大。
已经进行过集群的分片平衡速度和线程数量的调整,暂时先不再调整集群配置参数。
频繁创建删除索引引起集群状态异常,可能需要从使用场景上分析。
分析:
-
频繁进行索引创建和删除,会导致写入放大,即实际写入磁盘的数据量远大于用户实际写入的数据量,这会占用更多的磁盘I/O资源,影响性能。
-
频繁删除索引会导致索引碎片化(因为Elasticsearch不会立即从磁盘上移除已删除的文档),影响搜索性能。
-
频繁创建和删除索引,会增大master节点的管理压力和磁盘io压力,可能导致短暂的集群状态异常(集群进行索引创建、分片管理和回收需要一定的时间)
建议:
- 对于频繁创建的索引,一般都是临时业务需要,使用完毕后先暂时close。
- 对于需要删除的索引,建议惰性删除,比如通过定时任务在业务低峰期删除索引数据,可以减小对Elasticsearch性能的即时影响。