elasticsearch--集群&吞吐量

51zone 51zone     2023-01-12     774

关键词:

目录

高查询和高吞吐量

过滤器缓存

过滤器缓存负责存查询中使用到的过滤器。

Elasticsearch包含两种类型的过滤器缓存:节点过滤去缓存(默认)和索引过滤器缓存

节点过滤器缓存被分配在节点上的所有索引共享,可以配置成使用特定大小的内存,或分配给Elasticsearch总内存的百分比。属性是indices.cache.filter.size。

索引过滤器缓存基于索引级别,一般来说,应该使用节点级别的过滤器缓存,因为很难预测每个索引最终缓存大小,通常也不知道最终节点会有多少索引。

字段数据缓存和断路器

字段数据缓存是Elasticsearch缓存的一部分,主要用于当查询对字段执行排序或切面时。构建字段数据缓存是昂贵的。

允许用于字段数据缓存的内存大小用indices.fielddata.cache.size属性来控制。这些值是节点级别的。此外,默认情况下,字段数据缓存的大小是无限的

我们可以控制字段数据缓存的过期时间,默认情况下字段数据缓存是永不过期的。用indices.fielddata.cache.expire属性来控制。重建字段数据缓存是非常昂贵的,一般情况下,不应该设置过期时间。

断路器

字段数据断路器允许估计一个字段加载到缓存所需的内存。利用它,可以抛出异常防止一些字段加载到内存。有两个属性来控制其行为,indices.fielddata.break.limit,默认是80%。indices.fielddata.break.overhead,默认是1.03,定义了用来与原始估计相乘的一个常量。

存储模块

Elasticsearch中的存储模块负责控制如何写入索引数据。
利用index.store.type属性,指定使用存储的类型:
技术分享图片

索引缓冲和刷新率

Elasticsearch允许设置最大的内存数。indices.memory.index_buffer_size设置节点上所有索引分片共拥有的最大内存大小。例如20%,Elasticsearch提供最大堆大小20%的内存给索引缓冲。

indices.memory.min_index_buffer_size,默认是4mb,允许每个分片设置最小索引缓冲。

索引刷新率

index.refresh_interval指定在索引搜索器对象刷新频率,默认是1s,基本意味着数据视图刷新的频率。刷新率越低,文档对搜索操作可视的时间越短和索引操作将会变慢。
当对数据重建索引时,建议在索引阶段把index.refresh_interval属性设为-1。

线程池的配置

Elasticsearch使用多个池来控制线程的处理。
Elasticsearch公开的如下线程池类型:
技术分享图片
技术分享图片
技术分享图片

一些通用的建议来配置高索引和查询吞吐量的集群

必须给予Elasticsearch足够的内存,而且是物理内存。一般来说,运行Elasticsearch的JVM进程不应该超过可用内存的50%或60%。另外,把Xms和Xmx参数设置为相同的值以避免JVM堆的大小调整。

  1. 选择正确的存储
    除了物理内存以外,应该选择正确的存储实现。如果运行64位操作系统,应该选择mmapfs。如果没有运行64位系统,UNIX系统选择niofs,windows系统选择simplefs。如果可以容忍一个易失的存储,但希望它非常快,可以选择memory存储。
  2. 索引刷新率
    刷新率指定文档多块可以对搜索可见。刷新率越快,查询越慢,索引吞吐量越低。如果允许一个较慢的刷新率,如10s或30s,这使得Elasticsearch承受的压力更少,因此内部对象重新打开的频率更低,因此,将有更多的资源用于索引和查询。
  3. 优化线程池
    强烈建议调整默认线程池,尤其是查询操作。在性能测试之后,通常看到集群上的查询不堪重负,这是应该开始拒绝请求。大多数情况下,最好立刻拒绝该请求,而不是放到队列中并强制程序等待很长时间请求处理。
  4. 优化合并过程
    合并过程很大程度上取决于用例,以及若干因素。查询多个段跟查询数量更少的段相比更慢。但是,想查询数目更少的段,需要更多的代建进行合并。
    通常来说,如果想查询更快,应该以索引中更少的段为目标。如果想索引更快,应该有更多的段。使用并行合并调度器并调整默认调节值,是I/O子系统不会被合并吞没。
  5. 字段数据缓存和断路器
    默认情况下,字段数据缓存是无限的。有两个不同因子可以调节,来确保不会遇到内存不足错误。首先,可以限制字段数据缓存的大小。其次是断路器,通过它配置成加载过多数据时抛出一个异常。
  6. 索引的内存缓冲区
    用于索引缓冲区的可用内存越多(indices.memory.index_buffer_size),Elasticsearch可以在内存总保存的文档也越多。默认情况下,属性值是10%,如果需要更高的索引比例,可以提高这个百分比。
  7. 优化事务日志
    Elasticsearch有个内部模块称为translog。它是分片上的结构,为预写日志服务。
    默认情况下,Elasticsearch在事务日志中保存最多5000次操作,同时最大不超过200mb。如果想要更高的索引吞吐量,又可以承担数据对搜索操作不可见的时间更长,就可以提高这个默认值。index.translog.flush_threhold_ops和index.translog.flush_threhold_size(两者都是索引上的设置,可以通过Elasticsearch API实时更新)。
  8. 牢记于心
    除了上面提到的因素,应该监视Elasticsearch集群并作出相应的反应。

elk-elasticsearch-6.3.2部署(代码片段)

 参考博客:linux下ElasticSearch.6.2.2集群安装与head、Kibana、X-Pack..插件的配置安装参考博客:ELK5.5.1插件安装实践纪要(head/bigdesk/kopf/cerebo/中文分词插件)参考博客:ELK构建MySQL慢日志收集平台详解参考博客:针对Logstash吞吐量... 查看详情

elasticsearch节点角色

参考技术A一个Elasticsearch实例代表了一个ES节点,如果不通过node.roles设置节点的角色,一个ES节点默认的节点角色有:master、data、data_content、data_hot、data_warm、data_cold、ingest、ml、remote_cluster_client。Master-eligiblenode该节点拥有master... 查看详情

elasticsearch集群安装(代码片段)

...:1核2gjdk1.8+  1.下载wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz  2.解压tar-zxvfelasticsearch-6.2.2.tar.gz  3.设置权限chmod-R777elasticsearch-6.2.2  4.添加非root用户adduserwulei&&passwdwulei参考https://blog.csdn.net/u0... 查看详情

elasticsearch文档索引的crud操作(代码片段)

elasticsearch概念1.集群:一个或者多个节点组织在一起2.节点:一个节点是集群中的一个服务器,有一个名字来标识,默认是一个随机的漫威角色的名字3.分片:将索引划分为多份的能力,允许水平分割和扩展容量,多个分片响应... 查看详情

elasticsearch——windows下es集群部署&linux下es单节点集群部署(代码片段)

...要是说一下windows下部署ES集群、Linux下单节点部署。单台Elasticsearch服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服... 查看详情

elasticsearch——windows下es集群部署&linux下es单节点集群部署(代码片段)

...要是说一下windows下部署ES集群、Linux下单节点部署。单台Elasticsearch服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服... 查看详情

elasticsearch——核心概念&系统架构&集群中常见问题&路由计算&分片控制

1.ES核心概念1.1索引(index)一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必... 查看详情

elasticsearch——核心概念&系统架构&集群中常见问题&路由计算&分片控制

1.ES核心概念1.1索引(index)一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必... 查看详情

运维工程师监控工作之elasticsearch关键指标采集方法

   Elasticsearch组件依赖Java环境运行,除了监控ES所在服务器的操作系统、JVM等相关指标外,本文重点关注Elasticsearch自身监控指标。   ES核心功能是对外提供数据搜索服务,因此用户搜索请求的吞吐量、延迟... 查看详情

elasticsearch容错机制(代码片段)

一、关于横向扩容PUT/test_index"settings":"number_of_shards":3,"number_of_replicas":1  (1)primary&replica自动负载均衡,6个shard,3primary,3replica(2)每个node有更少的shard,IO/CPU/Memory资源给每个shard分配更多,每个shard性能更好(3)扩... 查看详情

3-1es集群介绍

...能。一个集群由一个唯一的名字标识,这个名字默认就是elasticsearch。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群。在产品环境中显式地设定这个名字是一个好习惯,但是使用默认值来进行... 查看详情

elasticsearch-03-简单理解elasticsearch中的概念,以及shard&replica的解释(代码片段)

elasticsearch的核心概念与简单举例1、NearRealtime(NRT):近实时,两个意思,从写入数据到数据可以被搜索到有一个小延迟(大概1秒);基于es执行搜索和分析可以达到秒级;2、Cluster:集群包... 查看详情

微服务elasticsearch集群介绍&搭建(代码片段)

...1f697;Es学习·第六站~🚩Es学习起始站:【微服务】Elasticsearch概述&环境搭建(一)🚩本文已收录至专栏:微服务探索之旅👍希望您能有所收获一.引入单机的elasticsearch做数据存储,必然面临两个问题:... 查看详情

elasticsearch-elasticsearch集群cluster(代码片段)

...geQingchun/article/details/126618387一、单机&集群1、单机单台Elasticsearch服务器提供服务,负载能力有限,超过这个阈值,服务器性能就会大大降低甚至不可用,因此在生产环境中,一般都会部署Elasticsea 查看详情

elasticsearch集群与索引red&yellow状态分析思路

...通过catAPI查询获知,参考文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.1/cat-shards.html下面这些情况有可能是正常的情况,可能导致索引的状态临时性的变成红色和黄色。INDEX_CREATED:集群正在创建索引。CLUSTER_RECOVERED:集群处于... 查看详情

es数据同步&集群(代码片段)

...存储原理4.4.集群分布式查询4.5.集群故障转移3.数据同步elasticsearch中的酒店数据来自于mysql数据库,因此mysql数据发生改变时,elasticsearch也必须跟着改变,这个就是elasticsearch与mysql之间的数据同步。3.1.思路分析常见的... 查看详情

Elasticsearch-hadoop & Elasticsearch-spark sql - 语句跟踪扫描&滚动

】Elasticsearch-hadoop&Elasticsearch-sparksql-语句跟踪扫描&滚动【英文标题】:Elasticsearch-hadoop&Elasticsearch-sparksql-Tracingofstatementsscan&scroll【发布时间】:2015-11-1307:27:12【问题描述】:我们正在尝试将ES(1.7.2,4节点集群)与Spar... 查看详情

elasticsearch7.x集群分片及水平扩容讲解(代码片段)

...处理搜索请求,响应太慢。为了解决这个问题,Elasticsearch提供了将索引划分成多份的能力,每一份就称之为分片。当你创建一个索引的时候,你可以指定你想要的分片的数量。每个分片本身也是一个功能完善并且... 查看详情