乐趣区

关于数据库:数栈优化案例物流客户Elasticsearch集群性能优化

数栈是云原生—站式数据中台 PaaS,咱们在 github 和 gitee 上有一个乏味的开源我的项目:FlinkX,FlinkX 是一个基于 Flink 的批流对立的数据同步工具,既能够采集动态的数据,也能够采集实时变动的数据,是全域、异构、批流一体的数据同步引擎。大家喜爱的话请给咱们点个 star!star!star!

github 开源我的项目:https://github.com/DTStack/fl…

gitee 开源我的项目:https://gitee.com/dtstack_dev…

一、客户背景

客户应用 ES 来进行数据存储、疾速查问业务订单记录,然而常常会呈现业务高峰期 ES 集群的 cpu 负载、内存应用均较高,查问提早大,导致前端业务拜访呈现大量超时的状况,极大影响其客户应用体验。

局部监控如下图:

1、集群架构如下:

集群节点配置:8 数据节点(16C64G);3 主节点(8C32G)

2、集群存在问题剖析

业务层面: 与客户业务人员沟通,业务解决中有几个聚合查问会占用较多的内存,且这类查问对准确性要求较高,需准确统计所有匹配后果。

架构层面: 存在 4 -5T 的单个较大索引,该索引字段多达 2000+,分片大小广泛 60G+,最高达到 130G+,是制约查问性能的一个较大瓶颈,另外集群在业务高峰期还会呈现常常的 fullgc,这是呈现拜访超时的间接起因。

如图:

二、Elasticsearch 集群优化

与客户开发人员沟通了解集群在业务上存在的问题,联合咱们在 ES 这块的服务教训,从语句参数、索引、架构等多个角度给客户提出调优倡议。

1、语句、参数调优

客户已提供 4 个慢查问语句,语句中聚合查问应用 ”execution_hint”: “map”,该执行策略会把命中的记录都捞回内存中,一旦查问后果较大就会占用大量内存。倡议应用 terminator_after,此办法能够管制查问后果数量,另外将不参加聚合、排序的字段设置为 doc_values:false, 节俭磁盘空间晋升索引速度。

2、集群架构优化:

在原有集群根底上增加协调节点或者扩容数据节点:

增加协调节点: 长处是能够加重数据节点压力,变更较为容易,缓解 fullgc 频繁呈现的问题;
扩容数据节点: 长处是能够加重以后数据节点压力,也能够减小分片大小;然而减少索引分片须要从新创立索引,从新导入数据,且以后节点存储压力不大,同时减少数据节点对存储空间有肯定的节约。

联合客户业务个性,咱们举荐客户应用增加协调节点的形式对集群架构进行优化。

3、集群索引优化:

能够对集群进行索引拆分和应用别名两方面进行优化调整。

拆分索引: 对索引字段进行拆分并确认大小,能够解决以后索引分片过大的问题,晋升查问性能。
应用别名: 依据日期定期创立新的索引(倡议按月创立索引),依据业务对对立查问的索引创立对立别名,该办法能够彻底解决以后索引分片过大问题,优化查问性能。

三、集群优化成果

集群优化后整体性能有显著晋升:

a. ES 集群负载、内存较为安稳,业务高峰期不会有较大稳定;

b. ES 集群 FullGC 呈现频次极大升高,升高对业务的影响;

c. ES 聚合查问提早减小,业务数据查问性能晋升,速度达到百毫秒级别

四、写在最初

袋鼠云通过数据集成优化、任务调度优化、代码优化、全链路数据品质保障、故障紧急解决、大数据平台运维,为客户提供大数据系统运维保障服务。

退出移动版