您的位置: 首页 - 站长

iis 无法访问此网站大型门户网站建设定做

当前位置: 首页 > news >正文

iis 无法访问此网站,大型门户网站建设定做,h5网页游戏,中国工程造价信息网官网文章目录 Elasticsearch JVM内存由哪些部分组成Indexing BufferNode Query CacheShard Request CacheField Data CacheSegments Cache查询 非堆内存内存压力mat分析es的jvm缓存监控 Elasticsearch JVM内存由哪些部分组成 官方建议Elasticsearch设置堆内存为32G#xff0c;因为… 文章目录 Elasticsearch JVM内存由哪些部分组成Indexing BufferNode Query CacheShard Request CacheField Data CacheSegments Cache查询 非堆内存内存压力mat分析es的jvm缓存监控 Elasticsearch JVM内存由哪些部分组成 官方建议Elasticsearch设置堆内存为32G因为Elasticsearch是Java语言实现的程序所以 1这部分堆内存首先得包括Elasticsearch从字节码加载验证解析到内存的部分如局部变量存储虚拟机栈实例对象存储堆空间等 2新的文档写入原理是首先被添加到内存索引缓存中然后写入到一个基于磁盘的段 3查询时如果用到filter过滤查询会有查询结果缓存 4当针对一个索引或多个索引运行搜索请求时每个涉及的分片都会在本地执行搜索并将其本地结果返回到协调节点协调节点将这些分片级结果组合成“全局”结果集。分片级请求缓存模块将本地结果缓存在每个分片上 5当对一个字段进行排序、聚合或某些过滤比如地理位置过滤、某些与字段相关的脚本计算等操作就会需要Field Data Cache 6ES 底层存储采用 Lucene,Lucene 引入排索引的二级索引 FST,原理上可以理解为前缀树加速查询
Indexing Buffer 新的文档写入原理是首先被添加到内存索引缓存中然后写入到一个基于磁盘的段这部分内存为Indexing Buffer 说明分配给节点上的所有分片配置参数 indices.memory.index_buffer_size接受百分比或字节大小值。它默认为10% indices.memory.min_index_buffer_size如果index_buffer_size指定为百分比则此设置可用于指定绝对最小值。默认为48mb. indices.memory.max_index_buffer_size如果index_buffer_size指定为百分比则此设置可用于指定绝对最大值。默认为无界。https://www.elastic.co/guide/cn/elasticsearch/guide/current/dynamic-indices.html https://www.elastic.co/guide/en/elasticsearch/reference/8.10/indexing-buffer.html Node Query Cache 说明每个节点有一个查询缓存由所有分片共享失效策略LRU算法生效条件1index.queries.cache.enabled配置开启默认true2filter过滤查询注意Term查询和在filter过滤器之外的不会产生Node Query Cache 3当缓存是按段进行时合并段可能会使缓存的查询无效配置参数indices.queries.cache.size接受百分比值如5%或精确值如 512mb。默认为10% https://www.elastic.co/guide/en/elasticsearch/reference/8.10/query-cache.html Shard Request Cache 说明对满足条件的查询整个查询 JSON 主体的哈希值用作缓存键对分片级请求缓存搜索size0的结果失效策略LRU算法生效条件1默认情况下请求缓存只会缓存搜索请求所在的结果size0因此不会缓存hits但会缓存hits.total, aggregations和 suggestions 2大多数使用的查询now无法缓存 3使用不确定性 API 调用的脚本化查询例如 Math.random()或new Date()不能缓存配置参数indices.requests.cache.size缓存在节点级别进行管理并且具有默认的最大堆大小1% 查看缓存使用情况 GET /_stats /request_cache {index: {uuid: X8PM2Eq_Tk2ZVpzjYcJ0CQ,primaries: {request_cache: {memory_size_in_bytes: 97792,evictions: 0,hit_count: 171814,miss_count: 20344}},total: {request_cache: {memory_size_in_bytes: 186416,evictions: 0,hit_count: 241527,miss_count: 26841}}} }https://www.elastic.co/guide/en/elasticsearch/reference/8.10/shard-request-cache.html Field Data Cache 说明包含field data和global ordinals。1Field Data包括一个字段中所有唯一值的列表以及每个唯一值的文档ID列表。它用于支持排序、聚合和搜索等操作。当你执行排序或聚合操作时Elasticsearch可能会在Field Data Cache中存储该字段的数据以便快速访问2Global Ordinals全局顺序号全局顺序号是Field Data的一种改进它使用更紧凑的数据结构来提高性能和减少内存占用。Global Ordinals通过将字段中的每个唯一值映射到一个整数从而更有效地支持排序和聚合操作。这有助于减少内存开销并提高性能3Field Data通常用于text字段而Global Ordinals更常用于keyword字段因为keyword字段通常包含更少的唯一值失效策略LRU算法生效条件1默认text字段类型不支持 2keyword, ip, and flattened 等字段上聚合操作 3从join字段对父文档和子文档进行操作包括 has_child查询和parent聚合配置参数indices.fielddata.cache.size默认无限制但应小于请求熔断器indices.breaker.request.limit默认JVM堆60% https://www.elastic.co/guide/en/elasticsearch/reference/8.10/modules-fielddata.html https://www.elastic.co/guide/en/elasticsearch/reference/8.10/text.html#fielddata-mapping-param https://www.elastic.co/guide/en/elasticsearch/reference/8.10/eager-global-ordinals.html Segments Cache Segments Cachesegments FST数据的缓存为了加速查询FST 永驻堆内内存无法被 GC 回收。该部分内存无法设置大小减少data node上的segment memory占用有三种方法 删除不用的索引。关闭索引文件仍然存在于磁盘只是释放掉内存需要的时候可重新打开。定期对不再更新的索引做force merge 解释下FSTES 底层存储采用 Lucene搜索引擎写入时会根据原始数据的内容分词然后生成倒排索引。查询时先通过查询倒排索引找到数据地址DocID再读取原始数据行存数据、列存数据。但由于 Lucene 会为原始数据中的每个词都生成倒排索引数据量较大。所以倒排索引对应的倒排表被存放在磁盘上。这样如果每次查询都直接读取磁盘上的倒排表再查询目标关键词会有很多次磁盘 IO严重影响查询性能。为了解磁盘 IO 问题Lucene 引入排索引的二级索引 FST [Finite State Transducer] 。原理上可以理解为前缀树加速查询 https://armsword.com/2021/03/26/es-memory-management/ 查询 /_cat/nodes?vhname,node,heap,ram,fielddataMemory,queryCacheMemory,requestCacheMemory,segmentsMemory name id node.role heap.current heap.percent heap.max ram.current ram.percent ram.max fielddataMemory queryCacheMemory requestCacheMemory segmentsMemory name id node.role heap.current heap.percent heap.max ram.current ram.percent ram.max fielddataMemory queryCacheMemory requestCacheMemory segmentsMemory es-7-master-1 7Doz dim 6.1gb 38 16gb 20.4gb 64 32gb 0b 3mb 205.9kb 484.2kb es-7-master-0 mxrv dim 8.2gb 51 16gb 20gb 63 32gb 0b 2.9mb 208.9kb 476.3kb es-7-master-2 uiZk dim 9.5gb 59 16gb 20gb 63 32gb 0b 2.6mb 209.5kb 516.2kbhttps://armsword.com/2021/03/26/es-memory-management/ 非堆内存 上面的提到的内存都是JVM管理的ES能控制即On-heap内存ES还有Off-heap内存由Lucene管理负责缓存倒排索引Segment Memory。Lucene 中的倒排索引 segments 存储在文件中为提高访问速度都会把它加载到内存中从而提高 Lucene 性能。 https://armsword.com/2021/03/26/es-memory-management/ 内存压力 GET /cn/_nodes/stats?filter_pathnodes..jvm.mem.pools.old {nodes: {7DozU2vhRc2xg2RGrdTFWA: {jvm: {mem: {pools: {old: {used_in_bytes: 2199187968,max_in_bytes: 17179869184,peak_used_in_bytes: 3432122880,peak_max_in_bytes: 17179869184}}}}}} }JVM Memory Pressure used_in_bytes / max_in_byteshttps://www.elastic.co/cn/blog/managing-and-troubleshooting-elasticsearch-memory mat分析es的jvm 熟悉的话通过直方图看谁占用内存最大 否则通过dominator_tree查看可以看到调用链 但不熟悉源码这种分析感觉作用不大 缓存监控 感觉作用亦不大安心使用es提供的接口吧 https://elasticsearch.cn/article/14432