博客 数栈优化案例:物流客户 Elasticsearch 集群性能优化

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

   小美   发表于 2023-02-01 10:14  683  0

一、客户背景

客户使用 ES 来进行数据存储、快速查询业务订单记录,但是经常会出现业务高峰期 ES 集群的 cpu 负载、内存使用均较高,查询延迟大,导致前端业务访问出现大量超时的情况,极大影响其客户使用体验。

部分监控如下图:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/2c3a1deb682c2239d6470455648b0855..png

1、 集群架构如下:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/dbe289c04a2d8f17d93ace727feccab2..png

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

2、 集群存在问题分析

  • 业务层面

    与客户业务人员沟通,业务处理中有几个聚合查询会占用较多的内存,且这类查询对准确性要求较高,需精确统计所有匹配结果。

  • 架构层面

      存在 4-5T 的单个较大索引,该索引字段多达 2000+,分片大小普遍 60G+,最高达到 130G+,是制约查询性能的一个较大瓶颈,另外集群在业务高峰期还会出现经常的 fullgc,这是出现访问超时的直接原因。 

 如图:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/cd45258bbcd7dee6e820cc7668c13da2..png

二、Elasticsearch 集群优化

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

1、语句、参数调优

客户已提供 4 个慢查询语句,语句中聚合查询使用 "execution_hint": "map",该执行策略会把命中的记录都捞回内存中,一旦查询结果较大就会占用大量内存。建议使用 terminator_after,此方法可以控制查询结果数量,另外将不参与聚合、排序的字段设置为 doc_values:false, 节省磁盘空间提升索引速度。

2、 集群架构优化:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/ae3f50d0a5aa1048cb9f415a0a84252f..png

在原有集群基础上添加协调节点或者扩容数据节点:

  • 添加协调节点:优点是可以减轻数据节点压力,变更较为容易,缓解 fullgc 频繁出现的问题;
  • 扩容数据节点:优点是可以减轻当前数据节点压力,也可以减小分片大小;但是增加索引分片需要重新创建索引,重新导入数据,且当前节点存储压力不大,同时增加数据节点对存储空间有一定的浪费。

结合客户业务特性,我们推荐客户使用添加协调节点的方式对集群架构进行优化。

3、 集群索引优化:

可以对集群进行索引拆分和使用别名两方面进行优化调整。

  • 拆分索引:对索引字段进行拆分并确认大小,可以解决当前索引分片过大的问题,提升查询性能。
  • 使用别名:根据日期定期创建新的索引(建议按月创建索引),根据业务对统一查询的索引创建统一别名,该方法可以彻底解决当前索引分片过大问题,优化查询性能。

三、集群优化效果

集群优化后整体性能有明显提升:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user6/article/14675f051aa074f3192a3068c2960ed2..png

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

b. ES 集群 FullGC 出现频次极大降低,降低对业务的影响;

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

四、写在最后

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


想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack


0条评论
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群