`
donlianli
  • 浏览: 335977 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Elasticsearch...
浏览量:216414
社区版块
存档分类
最新评论

elasticsearch 1.x优化

阅读更多
关于我,邯郸人
对这类话题感兴趣?欢迎发送邮件至donlianli@126.com
 
本博文为Elasticsearch Server2nd的部分第7章部分章节的翻译,版权归原作者。

设置Filter cache

缓存是提高性能的很重要的手段,es中的filter cache能够把搜索时的filter条件的结果进行缓存,当进行相同的filter搜索时(query不同,filter条件相同),es能够很快的返回结果。这是因为第一次计算完filter后,es就把结果存储到了缓存中,下次搜索时,es就不用再计算。

Esfilter cache有两种,一种是node级别的cache(filter cache默认类型),一种是index级别的filter cacheNode级别的cache被整个node共享,并且可以使用百分比设置,对应的属性为indices.cache.filter.size,这个属性的值可以是百分比,也可以是具体的大小。Index级别的cache,顾名思义,就是针对单个索引的大小。Es官方并不推荐使用这种设置,因为谁也无法预测索引级别的缓存到底有多大(可能非常大,超过了node的对内存),一个索引可能分布在多个node上面,而多个node的结果如果汇总到一个node上,其结果可想而知。

设置Field cache

当对字段排序或者对字段做聚合(如facet)时,字段缓存(Field cache)非常重要。Es会将这些待排序或者聚合字段都加载到内存,以提高对这些字段的快速访问。注意,将字段都加载到内存是非常耗费资源的,所以,你应该保证field cache足够大,以足以将所有的结果都缓存起来,下次排序或facet时不用再次从磁盘进行加载。

可以通过设置indices.fielddata.cache.size为具体的大小,比如2GB,或者可用内存的百分比,比如40%。请注意,这个属性是node级别(不是index级别的).当这个缓存不够用时,为了跟新的缓存对象腾出空间,原来缓存的字段会被挤出来,这会导致系统性能下降。所以,请保证这个值足够大,能够满足业务需求。另外,如果你没有设置这个值,es默认缓存可以无限大。所以,在生产环境注意要设置这个值。

同时,我们也可以为field cache指定过期时间,系统默认缓存不过期。可以通过设置indices.fielddata.cache.expire10m,表示缓存10分钟过期。Es建议,最好不要设置过期时间,因为将字段加载到内存是很浪费资源的。

设置circuit breaker

Circuit breaker,断路器。这个和field cache有关系。断路器可以估算待加载的field的大小。通过断路器,可以防止将特别大的field加载到内存,导致内存溢出。断路器发现待加载的filed超过java的对内存时,会产生一个异常,防止field的继续加载,从而起到保护系统的作用。有两个属性可以设置断路器,一个是indices.fielddata.breaker.limit,这个值默认是80%。这个值可以动态修改,通过集群设置的api就可以修改。80%就是说,当待加载的field超过es可用堆内存的80%时,就会抛一个异常。

另一个属性是indices.fielddata.breaker.overhead,默认值为1.03es将使用这个值乘以field实际的大小作Field估算值。

设置Index Buffers

indices.memory.index_buffer _size,这个值默认为10%,即堆内存的10%会被用作index时的缓存,这个值可以设置百分比也可以是固定的大小。缓冲自然是越大越好。但记得千万不能超过可用的对内存,并且要跟filter cache和filed cache保证在一个合理的比例。

设置Index Refresh rate(索引刷新频率)

index.refresh_interval,默认为1秒。即被索引的数据,1秒之后才能够被搜索到。这个时间越小,搜索和索引的性能就越低。这个时间越大,索引和搜索的性能就越高。es建议,在bulk index非常大的索引数据时,将此值设置为-1,索引完毕之后再将此值修改回来。

综合考虑

记住,对ES来说,缓存(caches)与缓冲(buffers)是提高索引(index)和搜索(query)性能的关键因素。

 

在我们优化es之前,我们必须时刻牢记一点,es需要足够多的内存,越多越好。但是,也不能把所有的内存都分配给es。分配给es的内存最好是保持在物理内存的50-60%左右,因为os也需要内存支持用户进程,比如分配线程,io缓存等。但是,物理内存的50-60%也不是唯一标准。假如你的内存有256G,即便和OS预留10%的内存,也有25G,足够操作系统使用。另外,最好设置XmxXms一样大,避免heap sizeresizing

做性能测试时,在相同的情形下,测试结果应该是可以重现的。你做的任何参数的修改,都应该使用进行性能测试,看性能是否有所提高。以性能测试为检验标准,是我们进行优化的必要前提。

 
0
0
分享到:
评论
1 楼 不帅sina 2018-01-31  
ElasticSearch视频教程
网盘地址:https://pan.baidu.com/s/1smQzpal 密码: jqde
备用地址(腾讯微云):http://url.cn/5TeD8vj 密码:Io3ank

相关推荐

    OpenGL ES 3.x游戏开发 下卷 高清版

    系统地讨论了OpenGL ES 3.x开发中的性能优化问题,介绍了OpenGL ES 3.1新增的计算着色器。给出了基于NDK的大型游戏案例——火力篮球和iOS下的3D游戏案例——方块翻转,方便读者快速上手应用。 本书适合游戏开发者、...

    ElasticSearch集群脑裂.pdf

    ElasticSearch集群脑裂优化设置,配合博文ES集群优化。

    ElasticSearch7.x整合Springboot2.x新闻搜索项目实战视频教程目录

    Springboot2.x整合ElasticSearch7.x新闻搜索项目实战视频教程:本课程基于Java开发,通过项目案例的方式讲解Elasticsearch分布式搜索引擎(Elasticsearch索引)中的核心技术,ElasticSearch版本是目前稳定版本,学员...

    ElasticSearch_优化整理

    关于ElasticSearch5.x从不同方面部署优化细节和建议。

    Elasticsearch Painless Script入门教程--示例数据-sat.json

    自Elasticsearch 5.x 引入Painless,使得Elasticsearch拥有了安全、可靠、高性能脚本的解决方案。Painless是Elastic开发并做了专门的优化,相较之前的脚本更快、安全、易使用、可靠。 Painless脚本的目标是使编写...

    log4j2-elasticsearch:Log4j2 Elasticsearch Appender插件

    log4j2-elasticsearch-hc与Elasticsearch 2.x,5.x,6.x和7.x集群兼容的优化Apache Async HTTP客户端 log4j2-elasticsearch-jest与Elasticsearch 2.x,5.x,6.x和7.x集群兼容的 log4j2-elasticsearch2-bulkprocessor...

    elasticsearch-bulk-insert-plugin-9.2.0.0-SNAPSHOT.zip

    spoon kettle 9.2 ElasticSearch7.x 连接的插件,官方只支持连接ElasticSearch6 --本机kettle9.1 es7.5.2 亲测可用,并优化性能问题

    ElasticSearch5.2全网最全技术视频

    (1)使用最新Elasticsearch 5.2版本讲解,市面上的书籍和视频几乎都停留在2.x版本 (2)深入浅出ES核心工作原理,全部手工画图讲解,完全不同于市面上已有视频的PPT讲解 (3)涵盖Elasticsearch所有核心知识点,...

    2019 Elastic 开发者大会演讲PPT汇总(22份).zip

    阿里云Elasticsearch大规模集群治理及内核优化实践 阿里云Elasticsearch在安全领域的应用 从Docker到K8S:新东方生产ELK的进化史 滴滴Elasticsearch集群跨版本升级以及平台重构 基于Consul的多Beats接入管控与多ES...

    elasticsearch-8.11.0-windows-x86-64

    Elasticsearch是一个分布式RESTful搜索引擎,针对生产规模工作负载的速度和相关性进行了优化。您可以使用Elasticsearch对包括以下应用程序的海量数据集执行实时搜索:矢量搜索、全文搜索、日志、度量、应用程序性能...

    创新声卡DOS、Windows3.X驱动软盘镜像

    用于VM虚拟机DOS、Windows3.x的声卡驱动。安装好Windows3.2后,在DOS下执行INSTALL命令安装驱动。若出现错误提示是因为基本内存不足,优化一下CONFIG.SYS和AUTOEXEC.BAT重新启动后安装。

    Elasticsearch的进阶之路

    课程介绍:本课程是基于Elasticsearch7.x版开设的课程,演示环境为Ubuntu16.04,读者具有Linux知识更好,如果没有Linux知识也没有太大关系,Elasticsearch是基于Java开发的,Windows上环境的搭建步骤基本类似,只是...

    CISCO路由之排除路由故障

    静态路由优化  为避免递归查找: 串行网络:使用出接口  以太网络:同时使用中间地址和出接口  4.反复的静态路由安装和删除  尽可能地使用出接口而不是中间地址来配置静态路由。  5.使用丢弃路由  有时...

    CBoard 它不仅仅是一款自助BI数据分析产品还是开放的BI产品开发平台

    + 20余种不同展现形式的图表图表数据准实时刷新图表级别权限控制支持多图表数据看板与看板定时邮件发送多种数据源接入JDBC(几乎所有实现了JDBC协议的数据库或数据产品都能轻松接入)多版本原生Elasticsearch:...

    centos7.5分布式平台搭建.docx

    12. Ambari集成ElasticSearch6.x 51 12.1. 通过SSH把源码传到centos机器上 51 12.2. 复制源码到Ambari 51 12.3. 编辑metainfo.xml文件 51 12.4. 启动/重启Ambari 51 12.5. 添加服务 51 13. ElasticSearch集群搭建 54...

    [2010.10.14][封装工具][天空作品] Easy Sysprep v3 RC3(+ SkySRS3.00)

    (1)ES3提供了可视化更好的注册表优化功能,您可以选择导入您的注册表优化方案,ES3会截取您优化方案中的一部分供您审阅。 (2)ES3自带一套XP的优化方案,目前尚无WIN7的优化方案,择日补充。 6、服务优化 (1)...

    matlab自动代码生成变量-surrogate-cmaes:代理CMA-ES(S-CMA-ES和DTS-CMA-ES)是基于代理的优化演进策

    代理CMA-ES(S-CMA-ES)是基于代理的优化演进策略。 它基于N. Hansen的CMA-ES算法,该算法与高斯过程或随机森林互连。 日志和新闻 2017/03/22:Metacentrum界面迁移到较新的版本,默认内存限制提高到1.5GB 介绍 可以...

    [2010.7.18][封装工具] Easy Sysprep v3 Beta3.6(+ SkySRS2.96)

    (1)ES3提供了可视化更好的注册表优化功能,您可以选择导入您的注册表优化方案,ES3会截取您优化方案中的一部分供您审阅。 (2)ES3自带一套XP的优化方案,目前尚无WIN7的优化方案,择日补充。 6、服务优化 (1)...

    react-virtual-list:超简单的虚拟化列表React组件

    遗产如果您正在寻找支持~0.13.x版本1的文档,请~0.13.x。安装您可以使用安装 。 > npm install react-virtual-list --save用法./lib/VirtualList.js模块导出单个ES5兼容的,可访问CommonJS的组件工厂。 import ...

Global site tag (gtag.js) - Google Analytics