分布式搜索引擎(五) ES性能分析

简介: ES 性能分析简述

ES搜素性能分析

  1. 性能优化杀手锏-filesystem cache

    ES 的搜索引擎严重依赖底层的fileSystem cache,如果过能给到FileSystem cache更多的内存,尽可能让内存容纳所有的index segment file索引数据文件,那么搜索的时候基本都是走内存的,性能会非常高

    fileSystem Cache 对ES搜索效率的影响

    image-20230511111825329.png

ES 搜索走FileSystemCache 和 走磁盘的性能差距有多大:如果搜索走的是磁盘文件检索,那么响应的时间基本上是在s级别,如果是在FileSystem-cache中获取,则响应的时间基本是在ms,一般来说是几ms到几百ms之间不等

根据上面的数据量来推断,如果总的数据量是1T左右,那么所有的ES集群中的FileSystem-cache加起来最少要得有半数的内存,这样你的ES检索速度才能提上来,性能是可以直接到2,3,5s

  1. ES存储数据限制,简单来说,如果在检索的时候,只需要根据id, name, age三个字段来搜索,但是在每次往es写入数据的时候,直接往es中存入了所有的数据,这就导致每一个数据中的70%的数据是不用搜索的,但是这些数据硬生生占用了FileSystemCache的空间

  2. 一般来说可以通过ES+Hbase来进行大数据量检索,因为hbase支持大数据量的存储,但是检索性能着实太低,所以,可以使用ES来检索关键数据,然后由Hbase来补充其余数据就可以

    从ES中根据name和age去进行检索,然后获取的结果可能就是20个doc id,然后根据doc id去hbase中查询每个doc id对应的完整的数据,将结果查询出来,然后再返回给前端,这样的性能完全是ms级的

    所以说最好的方式就是ES中只存放检索的数据,然后其他的数据存放在Mysql或者hbase中,最好的就是Es 中存放的数据尽量不要大于file system cache 的空间,或者是略微大于

  3. 数据预热

    上述可以解决一定的问题,但是如果Es中存储的数据着实超过了file system cahe的空间,还可以通过数据预热的方式来进行查询效率的优化,写一个定时任务,每隔一段时间执行一下慢查询的数据,这样用户体验起来要好很多

  4. 冷热分离,最好是将冷数据写入一个索引中,然后热数据写入另一个索引中,这样可以确保热数据被预热知乎,尽量让他们都留在fileSystem OS cache中,别让冷数据冲刷掉,类似于Mysql的水平拆分,有一台Shard专门处理热数据检索

  5. document模型设计

    document模型设计是非常重要的,尽量不要去执行es的复杂操作,譬如说join, nested,parent-child搜索都需要避免,性能很差,能用java处理的操作用java处理,然后es只做简单的查询

  6. 分页查询的性能优化

    es的分页其实是比较坑的,举个例子,每页10条数据,现在查询第100页,实际上就是会把每个shard上存储的前1000条数据都查到一个协调节点上,假如说有5个es,就会将获取到5000条数据,然后对这些数据进行合并,处理,然后再获取到最终100页的10条数据

    翻页的时候,翻的越深,每个shard返回的数据就越多,而且协调节点处理的时间越长,比较坑,所以用es做分页的时候,越到后面,就越慢

    针对这个问题,可以采用用scroll来进行处理,scroll的原理实际上就是保留一个数据快照,然后在一定时间内,如果不断地滑动往后翻页的时候,类似于现在浏览微博,不断往下刷新翻页,那么就用scroll不断通过游标获取下一页数据,这个性能是很高的,但是有个问题,scroll不能做到随机翻页,只能直接往下滑,所以可用性还是比较局限

    不允许深度分页/默认深度分页性能很差

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
5月前
|
消息中间件 存储 负载均衡
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
昔之善战者,先为不可胜,以待敌之可胜。不可胜在己,可胜在敌。故善战者,能为不可胜,不能使敌之必可胜。故曰:胜可知,而不可为。
248 2
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的HA高可用解决方案
|
15天前
|
自然语言处理 搜索推荐 数据库
高性能分布式搜索引擎Elasticsearch详解
高性能分布式搜索引擎Elasticsearch详解
47 4
高性能分布式搜索引擎Elasticsearch详解
|
5月前
|
存储 分布式计算 分布式数据库
【专栏】云计算与分布式系统架构在数字化时代的关键作用。云计算,凭借弹性、可扩展性和高可用性,提供便捷的计算环境
【4月更文挑战第27天】本文探讨了云计算与分布式系统架构在数字化时代的关键作用。云计算,凭借弹性、可扩展性和高可用性,提供便捷的计算环境;分布式系统架构则通过多计算机协同工作,实现任务并行和容错。两者相互依存,共同推动企业数字化转型、科技创新、公共服务升级及数字经济发展。虚拟化、分布式存储和计算、网络技术是其核心技术。未来,深化研究与应用这些技术将促进数字化时代的持续进步。
165 4
|
3月前
|
负载均衡 监控 搜索推荐
面试题ES问题之Solr和Elasticsearch在分布式管理上如何解决
面试题ES问题之Solr和Elasticsearch在分布式管理上如何解决
33 1
|
4月前
|
存储 搜索推荐 Java
微服务SpringCloud ES分布式全文搜索引擎简介 下载安装及简单操作入门
微服务SpringCloud ES分布式全文搜索引擎简介 下载安装及简单操作入门
58 2
|
5月前
|
存储 自然语言处理 搜索推荐
分布式搜索引擎ElasticSearch
Elasticsearch是一款强大的开源搜索引擎,用于快速搜索和数据分析。它在GitHub、电商搜索、百度搜索等场景中广泛应用。Elasticsearch是ELK(Elasticsearch、Logstash、Kibana)技术栈的核心,用于存储、搜索和分析数据。它基于Apache Lucene构建,提供分布式搜索能力。相比其他搜索引擎,如Solr,Elasticsearch更受欢迎。倒排索引是其高效搜索的关键,通过将词条与文档ID关联,实现快速模糊搜索,避免全表扫描。
207 10
|
5月前
|
存储 搜索推荐 Java
Java远程连接本地开源分布式搜索引擎ElasticSearch
Java远程连接本地开源分布式搜索引擎ElasticSearch
|
2月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
73 2
基于Redis的高可用分布式锁——RedLock
|
2月前
|
缓存 NoSQL Java
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
这篇文章是关于如何在SpringBoot应用中整合Redis并处理分布式场景下的缓存问题,包括缓存穿透、缓存雪崩和缓存击穿。文章详细讨论了在分布式情况下如何添加分布式锁来解决缓存击穿问题,提供了加锁和解锁的实现过程,并展示了使用JMeter进行压力测试来验证锁机制有效性的方法。
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
|
3月前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
下一篇
无影云桌面