首页 文章 精选 留言 我的

精选列表

搜索[权益保护],共10000篇文章
优秀的个人博客,低调大师

ES 断路器——本质上保护OOM提前抛出异常而已监控fielddata使用了多少内存以及是否有数据被驱逐是非常重要的。大量的数据被驱逐会导致...

监控fielddata使用了多少内存以及是否有数据被驱逐是非常重要的。大量的数据被驱逐会导致严重的资源问题以及不好的性能。 Fielddata使用可以通过下面的方式来监控: 对于单个索引使用 {ref}indices-stats.html[indices-statsAPI]: GET /_stats/fielddata?fields=* 对于单个节点使用 {ref}cluster-nodes-stats.html[nodes-statsAPI]: GET /_nodes/stats/indices/fielddata?fields=* 或者甚至单个节点单个索引 GET /_nodes/stats/indices/fielddata?level=indices&fields=* 通过设置?fields=*内存使用按照每个字段分解了. 断路器(breaker) 聪明的读者可能已经注意到fielddata大小设置的一个问题。fielddata的大小是在数据被加载之后才校验的。如果一个查询尝试加载到fielddata的数据比可用的内存大会发生什么情况?答案是不客观的:你将会获得一个OutOfMemory异常。 Elasticsearch包含了一个fielddata断路器,这个就是设计来处理这种情况的。断路器通过检查涉及的字段(它们的类型,基数,大小等等)来估计查询需要的内存。然后检查加 载需要的fielddata会不会导致总的fielddata大小超过设置的堆的百分比。 如果估计的查询大小超过限制,断路器就会触发并且查询会被抛弃返回一个异常。这个发生在数据被加载之前,这就意味着你不会遇到OutOfMemory异常。 Elasticsearch拥有一系列的断路器,所有的这些都是用来保证内存限制不会被突破: indices.breaker.fielddata.limit 这个fielddata断路器限制fielddata的大小为堆大小的60%,默认情况下。 indices.breaker.request.limit 这个request断路器估算完成查询的其他部分要求的结构的大小,比如创建一个聚集通, 以及限制它们到堆大小的40%,默认情况下。 indices.breaker.total.limit 这个total断路器封装了request和fielddata断路器去确保默认情况下这2个 使用的总内存不超过堆大小的70%。 断路器限制可以通过文件config/elasticsearch.yml指定,也可以在集群上动态更新: PUT /_cluster/settings { "persistent" : { "indices.breaker.fielddata.limit" : 40% (1) } } 这个限制设置的是堆的百分比。 最好把断路器设置成一个相对保守的值。记住fielddata需要和堆共享request断路器, 索引内存缓冲区,过滤器缓存,打开的索引的Lucene数据结构,以及各种各样别的临时数据 结构。所以默认为相对保守的60%。过分乐观的设置可能会导致潜在的OOM异常,从而导致整 个节点挂掉。 从另一方面来说,一个过分保守的值将会简单的返回一个查询异常,这个异常会被应用处理。 异常总比挂掉好。这些异常也会促使你重新评估你的查询:为什么单个的查询需要超过60%的 堆空间。 断路器和Fielddata大小 在Fielddata大小部分我们谈到了要给fielddata大小增加一个限制去保证老的不使用 的fielddata被驱逐出去。indices.fielddata.cache.size和indices.breaker.fielddata.limit的关系是非常重要的。如果断路器限制比缓冲区大小要小,就会没有数据会被驱逐。为了能够 让它正确的工作,断路器限制必须比缓冲区大小要大。 我们注意到断路器是和总共的堆大小对比查询大小,而不是和真正已经使用的堆内存区比较。 这样做是有一系列技术原因的(比如,堆可能看起来是满的,但是实际上可能正在等待垃圾 回收,这个很难准确的估算)。但是作为终端用户,这意味着设置必须是保守的,因为它是 和整个堆大小比较,而不是空闲的堆比较。 参考:Elasticsearch权威指南笔记 官网:https://www.elastic.co/guide/en/elasticsearch/guide/current/_limiting_memory_usage.html 本文转自张昺华-sky博客园博客,原文链接: http://www.cnblogs.com/bonelee/p/8202878.html ,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册