某物流客户Elasticsearch集群性能优化案例
客户背景
客户使用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聚合查询延迟减小,业务数据查询性能提升,速度达到百毫秒级别;
写在最后
袋鼠云通过数据集成优化、任务调度优化、代码优化、全链路数据质量保障、故障紧急处理、大数据平台运维,为客户提供大数据系统运维保障服务。
更多解决方案详情查看云掣官网https://www.dtstack.com/dtsmart/
某物流客户Elasticsearch集群性能优化案例的更多相关文章
- ELK 性能(4) — 大规模 Elasticsearch 集群性能的最佳实践
ELK 性能(4) - 大规模 Elasticsearch 集群性能的最佳实践 介绍 集群规模 集群数:6 整体集群规模: 300 Elasticsearch 实例 141 物理服务器 4200 CP ...
- mongodb集群性能优化
mongodb集群性能优化 在前面两篇文章,我们介绍了如何去搭建mongodb集群,这篇文章我们将介绍如何去优化mongodb的各项配置,以达到最优的效果. 警告 不做任何的优化,集群搭建完成之后,使 ...
- 腾讯云Elasticsearch集群规划及性能优化实践
一.引言 随着腾讯云 Elasticsearch 云产品功能越来越丰富,ES 用户越来越多,云上的集群规模也越来越大.我们在日常运维工作中也经常会遇到一些由于前期集群规划不到位,导致后期业务增长集群 ...
- elasticsearch集群介绍及优化【转】
elasticsearch用于构建高可用和可扩展的系统.扩展的方式可以是购买更好的服务器(纵向扩展)或者购买更多的服务器(横向扩展),Elasticsearch能从更强大的硬件中获得更好的性能,但是纵 ...
- ELK 性能(3) — 在 Docker 上运行高性能容错的 Elasticsearch 集群
ELK 性能(3) - 在 Docker 上运行高性能容错的 Elasticsearch 集群 介绍 在 Docker 上运行高性能容错的 Elasticsearch 集群 内容 通常熟悉的开发流程是 ...
- Elasticsearch 集群优化-尽可能全面详细
Elasticsearch 集群优化-转载参考1 基本配置 基本配置,5台配置为 24C 125G 17T 的主机,每台主机上搭建了一个elasticsearch节点. 采用的elasticsearc ...
- ELK 性能(2) — 如何在大业务量下保持 Elasticsearch 集群的稳定
ELK 性能(2) - 如何在大业务量下保持 Elasticsearch 集群的稳定 介绍 如何在大业务量下保持 Elasticsearch 集群的稳定? 内容 当我们使用 Elasticsearch ...
- ElasticSearch 集群 & 数据备份 & 优化
ElasticSearch 集群相关概念 ES 集群颜色状态 ①. - 红色:数据都不完整 ②. - 黄色:数据完整,但是副本有问题 ③. - 绿色:数据和副本全都没有问题 ES 集群节点类型 ①. ...
- 400+节点的 Elasticsearch 集群运维
本文首发于InfoQ https://www.infoq.cn/article/1sm0Mq5LyY_021HGuXer 作者:Anton Hägerstrand 翻译:杨振涛 目录: 数据量 版本 ...
- Elasticsearch集群 管理
第7章 深入Elasticsearch集群 启动一个Elasticsearch节点时,该节点会开始寻找具有相同集群名字并且可见的主节点.如 果找到主节点,该节点加入一个已经组成了的集群:如果没有找到, ...
随机推荐
- 织梦DEDEBIZ调用全站文章数量
织梦DEDEBIZ如何调用全站文章数量{dede:sql sql="select count(*) as c from biz_archives} 共有文章:[field:c/] 篇 {/d ...
- DHorse v1.4.0 发布,基于 k8s 的发布平台
版本说明 新增特性 提供Fabric8客户端操作k8s(预览)的功能,可以通过指定-Dkubernetes-client=fabric8参数开启: Vue.React应用增加Pnpm.Yarn的构建方 ...
- Solution -「BalticOI 2004」Sequence
Description Link. Given is a sequencen \(A\) of \(n\) intergers. Construct a stricly increasing sequ ...
- python开发实战——ip池
前言代理IP池是一组可用的代理IP地址,用于访问网站或执行其他网络请求.它可以帮助我们在网络请求时隐藏我们的真实IP地址,从而提高网络安全性.匿名性和稳定性.同时,代理IP池还可以通过定时更新和测试代 ...
- NebulaGraph实战:3-信息抽取构建知识图谱
自动信息抽取发展了几十年,虽然模型很多,但是泛化能力很难用满意来形容,直到LLM的诞生.虽然最终信息抽取质量部分还是需要专家审核,但是已经极大的提高了信息抽取的效率.因为传统方法需要大量时间来完成 ...
- 有人说SaToken吃相难看,你怎么看。
前言 今天摸鱼逛知乎,偶然看到了一个回答,8月份的,是关于SaToken的,一时好奇就点了进去. 好家伙,因为一个star的问题,提问的人抱怨了许多,我有些意外,就仔细看了下面的评论,想知道一部分人的 ...
- 6. 用Rust手把手编写一个wmproxy(代理,内网穿透等), 通讯协议源码解读篇
用Rust手把手编写一个wmproxy(代理,内网穿透等), 通讯协议源码解读篇 项目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy githu ...
- NFT(数字藏品)热度没了?这玩意是机会还是泡沫?
感谢你阅读本文! 大家好,今天分享一下NFT(数字藏品)这个领域,虽然今天的NFT已经没有之前那么火热,不过市场上依旧还是有很多平台存在,有人离开,也有人不断进来,所以很有必要再分析一番. 需要注意的 ...
- Codeforces Round 905 Div 1 (CF1887)
A1. Dances (Easy version) 把 \(a,b\) 序列都从小到大排序,\(a\) 贪心删大的,\(b\) 贪心删小的,二分答案并 \(O(n)\) \(\text{check}\ ...
- P2951 [USACO09OPEN] Hide and Seek S 题解
Problem 题目概述 给你一个无向图,边权都为 \(1\) ,求:离 \(1\) 号点最远的点的编号.最远的距离.有几个点是离 \(1\) 号点最远的. 思路 直接用:优先队列 \(BFS\),先 ...