Elasticesearch内存详解(五)——Node Query Cache

简介: 接收Elasticesearch内存中的Node Query Cache

1.Node Query Cache介绍

node级别的filter过滤器结果缓存

Elasticsearch 集群中的每个节点包含一个 Node Query Cache,作用域是Node实例,由该节点的所有 shard 共享,Cache 采用 LRU 算法,Node Query Cache 只缓存 filter 部分耗时高的查询类型

注:LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。

2 什么情况下会产生NodeQueryCache

1)只有Filter下的子Query才能参与Cache。

2)不能参与Cache的Query有TermQuery/MatchAllDocsQuery/MatchNoDocsQuery/BooleanQuery/DisjunnctionMaxQuery。

3)MultiTermQuery/MultiTermQueryConstantScoreWrapper/TermInSetQuery/Point*Query的Query查询超过2次会被Cache,其它Query要5次。

4)默认每个段大于10000个doc或每个段的doc数大于总doc数的30%时才允许参与cache。

5)结果集比较大的Query在Cache时尽量增加使用周期以免频繁Cache构建DocIdset。

6)Segment被合并或者删除,那么也会清理掉对应的缓存

7) 内存无法被GC。


3 Cache相关配置

1)indices.queries.cache.size:为每个节点配置缓存的内存大小,默认是10%,支持两种格式,一种是百分数,占节点heap的百分比,另一种是精确的值,如512mb,这个参数是静态的配置后需要重启节点生效。

2)indices.queries.cache.count: 配置缓存的总数量。

3)indices.queries.cache.all_segments: 用于是否在所有 Segment上启用缓存,默认是false,对文档数小于10000或者小于整个索引Doc的30%的Segment进行缓存。

4)index.queries.cache.enabled:属于index级别的配置,用来控制是否启用缓存,默认是开启的。

4 查看当前queryCache

curl -X GET "http://127.0.0.1:9200/_stats/query_cache?pretty&human"

相关文章
|
29天前
|
存储 Kubernetes 容器
【CKA模拟题】查找集群中使用内存最高的node节点
【CKA模拟题】查找集群中使用内存最高的node节点
16 1
|
4月前
|
存储 缓存 算法
内存系列学习(四):Cache和Write Buffer一般性介绍
内存系列学习(四):Cache和Write Buffer一般性介绍
144 0
|
2月前
|
存储 缓存
怎么理解内存中的Buffer和Cache?
怎么理解内存中的Buffer和Cache?
21 2
|
4月前
|
存储 算法 Linux
内存系列学习(五):ARM处理器中的Cache和Write Buffer
内存系列学习(五):ARM处理器中的Cache和Write Buffer
61 0
内存系列学习(五):ARM处理器中的Cache和Write Buffer
|
4月前
|
Java
一招轻松解决node内存溢出问题
一招轻松解决node内存溢出问题
|
6月前
|
Shell
使用 shell 脚本清理内存 buff/cache
使用 shell 脚本清理内存 buff/cache
115 0
|
7月前
|
JavaScript API
使用 Node.js Stream API 减少服务器端内存消耗的一个具体例子
使用 Node.js Stream API 减少服务器端内存消耗的一个具体例子
60 0
|
8月前
如何检测node中是否存在内存泄露的隐患
如何检测node中是否存在内存泄露的隐患
29 0
|
JavaScript 前端开发 开发者
Node.js 应用故障排查手册 —— 冗余配置传递引发的内存溢出
前面一小节我们以一个真实的压测案例来给大家讲解如何利用 [Node.js 性能平台](https://www.aliyun.com/product/nodejs) 生成的 CPU Profile 分析来进行压测时的性能调优。
1459 0
|
8天前
|
JSON JavaScript 前端开发
❤Nodejs 第九章(token身份认证和express-jwt的安装认识)
【4月更文挑战第9天】Node.js第九章介绍了Token身份认证,特别是JWT(JSON Web Token)作为跨域认证的解决方案。JWT由Header、Payload和Signature三部分组成,用于在客户端和服务器间安全传输用户信息。前端收到JWT后存储在localStorage或sessionStorage中,并在请求头中发送。Express-JWT是一个中间件,用于解析JWT。基本用法包括设置secret和algorithms。注意安全问题,避免混合使用不同算法以防止降级攻击。
34 0