文章目录

  • 1. 简介
  • 2. Circuit breaker:
    • 1. parent-level breaker设置
      • 1. indices.breaker.total.use_real_memory
      • 2. indices.breaker.total.limit
    • 2. field-data 断路器
    • 3. request 断路器
    • 4. in-flight-request 断路器
    • 5. 累积的已处理request断路器
    • 6. script 编译断路器
  • 3. Fielddata cache:
  • 4. Node query cache:
  • 5. Indexing buffer:
  • 6. Shard request cache:
  • 7. Recovery:
  • 8. Search Settings:

1. 简介

这一篇了解的是index的全局设置,就是对所有的index都同时生效,且不能对某些index进行单独设置的setting

  1. Circuit breaker: 内存断路器,防止过量的内存使用导致内存溢出
  2. Fielddata cache: 对存于内存中的fielddata cache 的限制
  3. Node query cache: 设置query results缓存使用的内存限制
  4. Indexing buffer: 控制分配给index写入过程使用的buffer的size
  5. Shard request cache: shard-level的request的cache使用限制
  6. Recovery: 在shard recovery的过程中可以使用的资源
  7. Search Settings: 全局的search相关的设置

2. Circuit breaker:

内存断路器,防止过量的内存使用导致内存溢出
Elasticsearch有多种breaker来防止内存溢出,每个breaker可以设置一个内存限制。同时,还有一个parent-level的breaker来设置所有的breaker可以使用的memory的总和

1. parent-level breaker设置

1. indices.breaker.total.use_real_memory

静态的设置,决定是否进行parent-level的memory使用统计,默认为true。如果为false那么久不会进行child breaker的内存使用统计了

2. indices.breaker.total.limit

parent-level breaker的使用限制。
这个的默认值会随着indices.breaker.total.use_real_memory的不同而不同。

  1. indices.breaker.total.use_real_memory为true的话,这个值为JVM heap的95%
  2. indices.breaker.total.use_real_memory为false的话,这个值为JVM heap的70%

2. field-data 断路器

这个断路器控制了es加载一个field的data使用的jvm内存限制,默认是jvm heap的40%。
可以通过下面的配置调整

  1. indices.breaker.fielddata.limit: 使用的jvm内存限制,默认为40%
  2. indices.breaker.fielddata.overhead: 如何估算多个fielddata的对内存的使用总和,是多个data field data的估算的和乘以一个系数,这个系数默认为1.03

3. request 断路器

这个breaker可以防止单个request的data导致了内存溢出。

  1. indices.breaker.request.limit: 默认为60%, 就是jvm heap的60%
    Limit for request breaker, defaults to 60% of JVM heap
  2. indices.breaker.request.overhead: 所有请求的使用的heap总量系数(会被用来乘以单个request的设置来得到总量值),默认为1

4. in-flight-request 断路器

请求中的熔断器,允许Elasticsearch限制在transport或HTTP级别上的所有当前活动的传入请求的内存使用超过节点上的一定量的内存。 内存使用是基于请求本身的内容长度。

  1. network.breaker.inflight_requests.limit: (inflight_requests)请求中熔断器,默认为100%的JVM堆。 这意味着受限于parent-level断路器配置的限制。
  2. network.breaker.inflight_requests.overhead: 所有(inflight_requests)请求中估算的常数乘以确定最终估计。 默认为1

5. 累积的已处理request断路器

这个breaker限制了那些已经处理完的请求仍然可以占用的内存,这一般都是值lucene segment占用的内存。

  1. indices.breaker.accounting.limit: 默认为100%的JVM堆。 这意味着受限于parent-level断路器配置的限制。
  2. indices.breaker.accounting.overhead: 所有已处理的request使用的heap总量系数,默认为1

6. script 编译断路器

这个不是对内存限制,主要是限制一定时间执行的inline script 编译的数量

  1. script.max_compilations_rate: 默认是75/5m, meaning 75 every 5 minutes

3. Fielddata cache:

fielddata cache 主要是在使用某个filed进行sort或者agg聚合操作的时候使用,会加载所有的field values到内存当中来是通过doc来获取这些field更加快速。这个需要大量的内存。而且只会针对使用text类型进行sort或者agg操作的时候会使用。

indices.fielddata.cache.size: 可以使用的内存限制,默认没有限制,可以限制为一个具体的数值12GB或者heap的百分比,比如30%,这个设置必须在每个data node上面设置。
可以使用Nodes Stats API 监控field-data使用的内存量。

4. Node query cache:

设置query results缓存使用的内存限制
每个node有一个所有shard共享的query cache,使用LRU的淘汰策略,进行cache的淘汰。并且只cache那些使用filter进行查询的query

下面的设置必须在每一个data-node上设置

  1. indices.queries.cache.size: 默认为jvm-heap的10%,也可以设置为一个具体的大小,比如512mb
  2. index.queries.cache.enabled: 是否对某个索引进行cache,可以针对具体的索引设置,默认为true

5. Indexing buffer:

控制分配给index写入过程使用的buffer的size ,这buffer用来存储新进来的doc,当buffer满了之后,这些doc 会被写入到磁盘中形成一个segment.这个buffer会被node上的所有shard瓜分。

cluster中的所有data-node都要有这些设置

  1. indices.memory.index_buffer_size: 默认为jvm heap的10%
  2. indices.memory.min_index_buffer_size: 在index_buffer_size使用百分比的方式设置的时候这个设置有效,默认为48mb
  3. indices.memory.max_index_buffer_size: 在index_buffer_size使用百分比的方式设置的时候这个设置有效,默认为没有限制

6. Shard request cache:

shard-level的request的cache使用限制
shard request cache可以让热点请求瞬间返回,默认情况下只会cache size=0的查询,只会对hits.total, aggregations,suggestions进行缓存。

缓存会在shard进行refresh之后失效,也就是说缓存搜索出来的结果会保证和不适用缓存的效果一致。

这种对于日志型的查询很有用,比较老的index已经稳定了没有更新了,没有refresh,所以缓存不会失效,对于同样的查询,效果很好。

开启或者关闭caching

PUT /my_index
{"settings": {"index.requests.cache.enable": false}
}

cache使用的内存大小,默认为jvm heap的1%


indices.requests.cache.size: 2%

7. Recovery:

在shard recovery的过程中可以使用的资源
点对点的shard恢复是指从primary shard 往一个新的或者是已经存在的shard copy数据,发生的场景有:

  1. 在node failure 之后重新创建一个replica
  2. relocate shard 操作

相关的设置有
1.indices.recovery.max_bytes_per_sec

动态设置,对每个node在recovery过程中使用的网络带宽进行限制,默认是40mb,这个限制只是针对单个node进行限制,如果设置的太大会占用较高的带宽,有可能影响其他操作,进而导致影响cluster的稳定性。

2.indices.recovery.max_concurrent_file_chunks
动态设置,而且是专家级的设置,在recovery的过程中chunk的并行度,在没有达到max_bytes_per_sec限制的情况下可以增大这个值来提升并行度。

8. Search Settings:

全局的search相关的设置
indices.query.bool.max_clause_count
默认这个值为1024
这个值会影响in查询的id数量,和boolean查询的条件数,其实这两个最后都重写成了lucene的booleanQuery

这种看样子只能通过重启es,修改配置才行。

05.global_index_setting_index相关全局设置相关推荐

  1. 05.elasticsearch-index相关总结

    文章目录 1. 简介 2. index常规设置 1. static setting 1. index.number_of_shards 2. index.shard.check_on_startup ...

  2. 【沃顿商学院学习笔记】商业基础——Accounting:05现金流量表相关学习

    财务报表的学习笔记 本章是针对基本的概念现金流量表SCF和息税折旧摊销前利润EBITDA. 现金流量表SCF SCF的构成我们一般分三类:Operating Activities运营活动部分, Inv ...

  3. 简单介绍一下R中的几种统计分布及常用模型

    统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...

  4. ggClusterNet---一条代码完成全内容微生物网络

    写在前面 今年的毕业生应该是6月底离校,但是这位朋友到了九月份终于完善了手上的工作,对这几年来了一个完善的结束,感谢送给我的一方印章,也祝铠鸣大展宏图.再有就是ggclusterNet功能也完善了90 ...

  5. 分享GitHub上一位老外的嵌入式C编码规范(收藏细读)

    简 介: 本文分析在头条上分享GitHub上一位老外的嵌入式C编码规范(收藏细读):嵌入式大杂烩. 关键词: 嵌入式,C语句,编程规范 分享GitHub上一位老外的嵌入式C编码规范(收藏细读) §01 ...

  6. golang 时间原点 时间日期格式化

    问题: 问一个时间格式化问题: fmt.Println(time.Now().Format("2006year 01month 02day")) 2015year 12month ...

  7. 不同层级的Java开发者的不同行为

    前言: 随着秋招的开启,不管是应届毕业生找工作,还是在职程序员跳槽去找更高薪水的工作,都要面临面试这一难关.应对面试不仅需要丰富的项目经历,还需要牢固的基础知识.在这里整理一些比较详细的Java高频面 ...

  8. 今年Java面试必问的这些技术面,看完这一篇你就懂了

    说明 Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在分布式事务的问题. 业界有很多的解决方案,对此我相信大家都百度一下子就有很多 ...

  9. 【STM32】I2C详解

    00. 目录 文章目录 00. 目录 01. I2C简介 02. I2C主要特性 03. I2C功能说明 04. I2C中断 05. I2C相关寄存器 5.1 I2C 控制寄存器 1 (I2C_CR1 ...

最新文章

  1. 如何查看linux动态链接库文件的版本等其他信息
  2. C# 填充pdf 模板生成报告
  3. 【tensorflow】tf-argmax()
  4. CXF WebService整合Spring
  5. 黄金白银、古董与收藏
  6. C语言重难点:内存对齐和位段
  7. Python 标准库—— datetime(运行时间的判断)
  8. mongodb副本集php,MongoDB副本集
  9. 5G协议下载地址及介绍
  10. java htmlelement_Java Element.outerHtml方法代码示例
  11. python爬虫-《笔趣看》网小说《悟空看私聊》
  12. matlab茎叶图命令,[转载]转载:Stata命令(转自人大论坛)
  13. fadeOut和fadeIn
  14. 搭建nexus私服:nexus-3.19.1-01
  15. Latex 的中文操作
  16. maven命令行下载依赖
  17. 曾风靡全国的五笔输入法要淘汰了?
  18. 网络创业者之家:在家就能做的兼职项目推荐
  19. 系统服务器是什么意思,什么是服务器
  20. 生成6位随机数(带英文)

热门文章

  1. SQLServer权限
  2. cocos2d-x初探学习笔记(13)--内存回收机制
  3. 从send函数和sendto函数参数的不同看TCP和UDP的差别
  4. 几个预编译指令的用法
  5. 他35岁,年薪100万,牛逼的人生无需解释
  6. Java代码优化:使用构造函数和使用一个setter的效率差别
  7. LiveVideoStack线上分享第四季(一):沉浸式音频技术的采集,传输,播放,以及应用场景初探...
  8. 在线教育音视频技术探索与应用
  9. 腾讯云EMR基于YARN针对云原生容器化的优化与实践
  10. 混沌工程将成标配?落地腾讯游戏后带来了哪些惊喜?丨Gdevops峰会