elasticsearch一些重要的配置参数

先看一下官网给我们提供的全部的参数配置项

官网地址

官方文档链接:注意版本是8.1Configuring Elasticsearch | Elasticsearch Guide [8.1] | Elastic​编辑https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html

imgimg

重要(基本)参数

Important Elasticsearch configuration

关于分片和路由的配置

Cluster-level shard allocation and routing settings

分片的配置,用于集群重启时候的分片恢复、副本分配问题、分片平衡问题、以及删除节点的时候触发生效。

master节点负责分片分配的相关问题:包括了分片去哪个节点,以及节点之间的分片平衡(当一个节点上的数据过多,与其它节点分配不均匀的时候,master节点负责重新平衡)。

分片分配相关参数

参数:cluster.routing.allocation.enable

  • cluster.routing.allocation.enable

    用来限制不同的分片能否在某个节点上分配:

    all- (默认)允许分配所有类型的分片。

    primaries- 只允许分配主分片。

    new_primaries- 仅允许新索引的主分片分配。

    none- 不允许对任何索引进行任何类型的分片分配。该设置不影响重启节点时本地主分片的恢复。具有未分配主分片副本的重新启动节点将立即恢复该主分片,假设其分配 id 与集群状态中的活动分配 id 之一匹配。

    这里的优化点,我们可以靠谱的机器分配主分片。可能有问题的机器,可以限制主分片的分配。

  • cluster.routing.allocation.node_concurrent_incoming_recoveries

    副本在当前节点分配的并发数。比方说,你的索引只有主分片,没有副本。你想要添加副本,则你就要在别的机器上去分配副本。

    默认值为:2

    增大该配置,可以提升添加副本的速度。但是它意味着花费更多的资源。假如你不考虑集群当前服务能力,就想快速添加副本,则可以增大该配置。具体的可以增加到多大。需要做压力测试。根据不同的机器资源,有不同的效果。

  • cluster.routing.allocation.node_concurrent_outgoing_recoveries

    最大允许同时多少个分片去别的机器上恢复。

    默认值为:2

    增大该配置,可以提升添加副本的速度。但是它意味着花费更多的资源。假如你不考虑集群当前服务能力,就想快速添加副本,则可以增大该配置。具体的可以增加到多大。需要做压力测试。根据不同的机器资源,有不同的效果。

  • cluster.routing.allocation.node_concurrent_recoveries

    该参数合并了cluster.routing.allocation.node_concurrent_incoming_recoveriescluster.routing.allocation.node_concurrent_outgoing_recoveries这两个参数。意思是只配置当前这个参数,以上两个参数都会生效。

  • cluster.routing.allocation.node_initial_primaries_recoveries

    当节点重启后,或者说集群重启后,主分片恢复的并发数。假如一个节点上有20个主分片。那么,如果默认4个并发,则需要分五次,才能把这个主分片全部恢复起来。或者说同时只能有四个主分片一起恢复。

    默认值为:4

    这个参数可以用来提升集群故障重启后的集群恢复速度。我们可以适当增大它。能够增大多少,也是需要具体的压力测试。根据机器资源不同,可增大就不同。

    目前我认为这个参数是和CPU能力挂钩的。

    另外我认为:集群恢复,我能可以调大它。不用考虑此时集群服务能力。说白了,主分片如果都没回复全,肯定对外提供查询,它是有问题的。

    注意一点,所谓的参数调优,每个参数都不是孤立的,它要和其它参数一起配合来使用。

  • cluster.routing.allocation.same_shard.host

    这个参数只会在一台物理机器上多个节点的时候才会有用。

    默认配置:false

    cluster.routing.allocation.same_shard.host: true 禁止把副本分配到同一台物理机器上(相同ip地址认为是同一台机器)

    cluster.routing.allocation.same_shard.host: false 可以把副本分配到同一台物理机器上。如果一台物理机器只有一个节点,默认为false也没什么问题,因为副本不会分配到同一个机器上。但是一台机器上有多个节点,就失去数据容灾的能力了,也不能将请求均分到其它机器上去。

分片平衡配置

分片平衡问题,对于es集群来说,它其实是希望数据能按大小均匀分不到不同的节点上的。当发生数据倾斜的时候,集群会有一个自动的平衡机制,帮你把分片挪到别的节点上。

这里有一个点,就是我们在组建集群的时候,最好能够将每台机器,或者说每个节点,能用的磁盘空间对齐。避免节外生枝。

cluster.routing.rebalance.enable

设置哪些分片能够重新平衡:

  • all- (默认)允许对所有类型的分片进行分片平衡。

  • primaries- 仅允许对主分片进行分片平衡。

  • replicas- 仅允许对副本分片进行分片平衡。

  • none- 任何索引都不允许任何类型的分片平衡。

cluster.routing.allocation.allow_rebalance

指定何时允许分片重新平衡:

  • always- 始终允许重新平衡。

  • indices_primaries_active- 仅当分配了集群中的所有主节点时。

  • indices_all_active- (默认)仅当集群中的所有分片(主分片和副本)都已分配时。这个阶段显然是最安全的。不要掺和太多事,等集群稳定的时候去平衡。

cluster.routing.allocation.cluster_concurrent_rebalance

设置集群中,执行分片重新平衡的并发数。默认值为2的情况下,一个集群中最多能有2个分片同时去执行重新平衡。

默认值:2

分片平衡规则设置

上边只提到了。集群会自动平衡节点中的分片。那策策略是什么呢?或者说规则是什么呢?

cluster.routing.allocation.balance.shard

(动态)定义节点上分配的分片总数的权重因子(浮点数)。默认为0.45f. 提高这一点会增加集群中所有节点上的分片数量相等的趋势。

从这里我们可以知道,es只能保证分片数量平衡。

那么再提出来一个问题:假如分片的大小并不平衡呢?

cluster.routing.allocation.balance.index

(动态)定义分配在特定节点(浮点数)上的每个索引的分片数的权重因子。默认为0.55f. 提高这一点会增加集群中所有节点上每个索引的分片数量相等的趋势。

cluster.routing.allocation.balance.threshold

(动态)应该执行的操作的最小优化值(非负浮点)。默认为1.0f. 提高此值将导致集群在优化分片平衡方面不那么积极。

与磁盘相关的分片设置

关于磁盘的保护。我们很容易就可以理解,我们的磁盘总不能写满吧?es集群给我们增加了这个控制。特地设置了三个水位线,一个最低水位线,一个控制水位线,一个最高水位线。看下图三条线。这个水位线是说磁盘使用量占比。

当磁盘空间倾斜的时候,es需要自动调整。假如我们物理节点的磁盘大小不一致。节点A分配1T磁盘,节点B分配10T磁盘,如果同样是每个上边分配相同的分片。同样都写入数据,显然A节点先到达最低水位线。

所以磁盘有一个限制。当写入磁盘到达橙色低水位线的时候,副本将无法再在这个节点上分配。

当到达控制水位线,就会进入一个挪分片阶段。这个阶段会把分片挪到别的节点上去,以达到磁盘平衡的目的。

当所有的节点都达到了控制水位线的时候,就不能再挪分片了,分片也没有地方去了。此时还能继续写入数据,当写入直到最高水位线的时候,不行了,集群不再接受写入请求了!此时能读,能删除。

这里有一个集群规划-磁盘规划方面的优化点。

我们知道这个挪分片的过程,数据不会自己从一个磁盘飞到另外的磁盘。它是要花资源的,占用CPU,占用磁盘IO,占用网络IO。

所以我们要尽可能的分配均匀的磁盘给每个节点。尽可能的避免这个挪的过程,从而避免资源占用。

另外如何磁盘大小不一样。我们通过上边的参数知道,它是按比例来算的。也就是有可能在极端情况下:假如三个节点,磁盘分别是 1T,10T,10T。假如数据都装85%,这意味着,一次搜索,一个节点处理850G数据,另外两个节点每个处理8.5T。这相当于只有两个节点在工作。从而失去了集群的意义。

可以使用以下设置来控制基于磁盘的分配:

cluster.routing.allocation.disk.threshold_enabled

(动态)默认为true。设置为false禁用磁盘分配决定器。

cluster.routing.allocation.disk.watermark.low 

(动态)控制磁盘使用的低水位线。默认为85%,这意味着 Elasticsearch 不会将分片分配给磁盘使用率超过 85% 的节点。它也可以设置为绝对字节值(如500mb),以防止 Elasticsearch 在可用空间少于指定数量时分配分片。此设置对新创建索引的主分片没有影响,但会阻止分配它们的副本。

cluster.routing.allocation.disk.watermark.high 

(动态)控制水位线。它默认为90%,这意味着 Elasticsearch 将尝试将分片从磁盘使用率高于 90% 的节点,开始挪分片去其他节点。

cluster.routing.allocation.disk.watermark.flood_stage

(动态)高水位线,默认为 95%index.blocks.read_only_allow_deleteElasticsearch对在节点上分配了一个或多个分片并且至少有一个磁盘超过洪水阶段的每个索引强制执行只读索引块 ( )。此设置是防止节点耗尽磁盘空间的最后手段。当磁盘利用率低于高水位线时,索引块会自动释放。

注意以上配置需要对齐,要么都用百分比,要么都指定具体大小。

cluster.info.update.interval

(动态)Elasticsearch 应该多久检查一次集群中每个节点的磁盘使用情况。默认为30s.

以下两个参数没看懂:等看懂了再来补。

cluster.routing.allocation.disk.watermark.flood_stage.frozen

(Dynamic) Controls the flood stage watermark for dedicated frozen nodes, which defaults to 95%.

cluster.routing.allocation.disk.watermark.flood_stage.frozen.max_headroom

(Dynamic) Controls the max headroom for the flood stage watermark for dedicated frozen nodes. Defaults to 20GB when cluster.routing.allocation.disk.watermark.flood_stage.frozen is not explicitly set. This caps the amount of free space required on dedicated frozen nodes.

search相关设置

限制搜索条件包含的搜索子句

参数: indices.query.bool.max_clause_count

默认值:4096

这个默认配置是偏大的。这个我们可以调小。用来对集群的保护。

聚类结果数(桶的个数,例如你去 agg terms,获取聚类结果)

参数: search.max_buckets

默认是:65536

这里建议聚类结果,不要一下子返回,通常情况,可以利用 compsit滚动导出聚类结果。

这个不难理解,比方说你一共有100亿数据,让你一下子从集群中拿出20亿。这也不现实,集群做不到这件事,肯定要滚动利用游标的方式导出。

嵌套查询的层数

就是嵌套查询最多有几层

参数: indices.query.bool.max_nested_depth

默认值:20

index相关配置

是否允许自动创建索引

参数: action.auto_create_index

默认值:true

删除索引是否要指定索引名称

参数: action.destructive_requires_name

默认值:false,如果设置为true,则不能通过通配符来删除索引。

是否允许关闭索引

参数: cluster.indices.close.enable

默认值:true。如果设置为false,则不能关闭索引。

关闭索引,会释放内存空间,但是不会释放磁盘空间。

跨集群数据同步白名单

由 ip:port字符串数组组成

参数: reindex.remote.whitelist

例如: reindex.remote.whitelist : ["10.10.10.10:9200", "10.10.10.11.9200:*"]

是否启用内置索引和组件模板

参数:stack.templates.enabled

默认为true,如果为false,则es不会自动为你创建以下这些索引。

此设置影响以下内置索引模板:

  • logs-*-*

  • metrics-*-*

  • synthetics-*-*

此设置还会影响以下内置组件模板:

  • logs-mappings

  • logs-settings

  • metrics-mappings

  • metrics-settings

  • synthetics-mapping

  • synthetics-settings

控制集群是否能写入数据

控制集群只读: cluster.blocks.read_only

控制集群可读可以删除: cluster.blocks.read_only_allow_delete

集群分片数设置

限制单个节点最大的分片数:cluster.max_shards_per_node

默认值:1000

所以集群的总的主分片和副本分片总数为 cluster.max_shards_per_node * 数据节点的个数

如果索引被关闭,则其分片数不计数。

这个很多人给的建议是:每1G堆内存,对应20个分片。假如你给堆分配30G堆内存,则该节点分片数最好不要超过600个。这个默认是每个节点1000个,调优的时候通常是降低这个默认值,而不是增大它。

限制单个节点上存在冻结的分片: cluster.max_shards_per_node.frozen

向理解以下什么冻结的分片,换句话说,就是关闭的分片。比如一个,索引有十个分片,一共两个节点,假如每个节点5个分片,将索引close掉,那么这5个分片就算是冻结分片。如果还不懂,看下边这篇文章。

关于什么是冻结索引?

ES冻结索引_51CTO博客_es冻结索引 占多少内存

Field data cache 设置

参数: indices.fielddata.cache.size

取值:可以是百分比,例如: 20% 。也可以制定是 5GB。

注意熔断器中也有参数限制Field data cache 的大小。并且默认值是 40%。所以如何设置这个参数的时候要比40%小。

关于Field data cache,请看下边的这篇文章:

elasticsearch中 fieldData_elasticsearch fielddata_水的精神的博客-CSDN博客

永远不要尝试打开它。它是性能的杀手。我们不要对text类型的字段排序,聚类!如果真的需要,就同时给它设置一个keyword类型,利用doc values,而不是构造Field data!

index buffer cache

用作写缓存。分配的是堆空间。

indices.memory.index_buffer_size

接受百分比或字节大小值。它默认为10%,这意味着10%分配给节点的总堆将用作所有分片共享的索引缓冲区大小。

indices.memory.min_index_buffer_size

如果index_buffer_size指定为百分比,则此设置可用于指定绝对最小值。默认为48mb.

indices.memory.max_index_buffer_size

如果index_buffer_size指定为百分比,则此设置可用于指定绝对最大值。默认为无界。

Node query cache

节点级别的缓存。

es节点可以缓存查询的结果。

参数: index.queries.cache.enabled 是否开启节点请求结果缓存。

默认值:true。代表节点默认是会缓存查询数据的。

默认情况下,缓存最多可容纳 10000 个查询 。段合并会导致缓存失效!

参数: indices.queries.cache.size 节点分配个查询缓存的堆大小。

默认值:10%。 也就是说有百分之十的堆空间,用于节点的请求缓存。

它是LRU的策略来进行替换的。但是不会被GC回收掉!

Shard requests cache

分片级别的缓存。

通常情况下缓存 查询结果为0的数据。例如: aggregations, andsuggestions.

为了保证搜索的实时性和搜索结果的最终一致性。分片级别的缓存,会在执行 refreshe 的时候失效。

所以说,分片级别的缓存生效的时间,取决于 refreshe的时间间隔。缓存和实时性,是不可兼得的一件事请!

参数:index.requests.cache.enable 是否开启分片级别的缓存。

默认值:true。开启

另外我们可以在一次请求的时候指定是否缓存本次结果在分片上。

GET /my-index-000001/_search?request_cache=true
{"size": 0,"aggs": {"popular_colors": {"terms": {"field": "colors"}}}
}
​

参数:indices.requests.cache.size 分片缓存占用堆内存的大小

默认值:1%

快照与恢复配置

快照操作的最大并发数。操作包括快照创建,删除和复制。

参数: snapshot.max_concurrent_operations

默认值:1000

快照生命周期管理配置

是否把记录快照历史操作

参数: slm.history_index_enabled

默认值:true

快照的执行周期

参数: slm.retention_schedule

可以是 cron表达式: 0 30 1 * * ?

多长时间删除快照

参数: slm.retention_duration

默认值:1小时

允许用来快照恢复的url

参数:repositories.url.allowed_urls

线程池相关设置

通常情况下,我们对es集群下发的命令,例如search、index、agg、suggest,段合并,等等。都交由不同的线程池来完成执行。这个其实不难理解,线程是任务调度的最小单元。对es来说也是。

先来聊一聊物理机器的CPU

一个物理节点对应一个es节点,是理想情况。es会自动检测CPU的个数,这并不难。但是如果一台机器有多个节点,就有问题了。因为es没有那么智能,它会傻傻的以为,当前的CPU都是给自己一个节点用的。这种情况下,会很大程度上降低es的性能。

假如一台机器上有多个节点,请告诉node,它该分几个核心!

以下参数可以设置CPU核心数。假如一台机器,总的核心数是32,假如你的机器上分配了两个节点,你可以设置为16,此时每个节点正好分配16个核心。 16核心是一个节点的理想核心数!

node.processors: 2

再聊一下线程池!如果熟悉线程池原理,应该知道,线程池可以有固定线程数的线程池,也有弹性的线程池。提交的任务会优先给线程处理,如果处理不过来,自然要把这些任务放在任务队列里。如果任务队列还满的话,那自然要触发拒绝策略了。

在看es 线程池相关的配置参数的时候,我们主要关注,线程池的功能,线程池是否是固定线程数,以及其任务队列的大小。

generic线程池

参数:generic

用于集群运行的幕后工作者,例如:用于节点的发现。

用于search的线程池

参数:search

例如: count、search、suggest

固定线程数:(CPU核心数 * 3 / 2 + 1)

任务队列:1000

下边这个我不太懂

search_throttled

For count/search/suggest/get operations on search_throttled indices. Thread pool type is fixed with a size of 1, and queue_size of 100.

search_coordination

For lightweight search-related coordination operations. Thread pool type is fixed with a size of a max of min(5, (# of allocated processors) / 2), and queue_size of 1000.

get

For get operations

固定线程数:CPU核心数

任务队列:1000

analyze

用于获取语句的执行过程。

固定线程数:1个线程

任务队列大小:16

write

写操作:写、删除、更新、批量提交操作

固定线程数:CPU核心数 + 1

任务队列大小:10000

snapshot

For snapshot/restore operations. Thread pool type is scaling with a keep-alive of 5m and a max of min(5, (# of allocated processors) / 2).

生成快照数据。

线程数:min(5, (CPU核心数 + 1) / 2) 也就是,最多5个线程。

snapshot_meta

读取快照数据,用来恢复。

线程数:min(50, (CPU核心数* 3)).

warmer

用于段数据预热

线程数:min(5, (CPU核心数) / 2).

refresh

将数据从JVM堆内存,刷新到文件系统,生成段。

线程数:min(10, (CPU核心数) / 2).

fetch_shard_started

获取分片状态信息.

线程数:最大为 CPU核心数*2

fetch_shard_store

获取分片列表.

线程数:最大为 CPU核心数*2

flush

用于操作文件系统上的段数据(refresh之后的阶段),从文件系统落到磁盘上。

线程数: min(5, (CPU核心数) / 2).

force_merge

段合并的线程数。默认为1个线程。

注意,这个参数不要随意调。比较致命。因为段合并是一个非常花费资源的操作。如果真的要调大,可以在凌晨来段合并。

management

用于集群管理

默认 5 个线程

system_read

系统索引的读.

线程数: min(5, (CPU核心数) / 2).

system_write

系统索引的写

线程数: min(5, (CPU核心数) / 2).

system_critical_read

For critical read operations on system indices.

线程数: min(5, (CPU核心数) / 2).

system_critical_write

For critical write operations on system indices.

线程数: min(5, (CPU核心数) / 2).

watcher

用于集群监控

线程数: min(5 * (CPU核心数), 50)

任务队列:1000

我们可以通过以下配置,来指定线程数。

thread_pool:# 指定线程池类型write:# 指定线程数size: 30# 指定任务队列大小queue_size: 1000

集群与注册相关配置

es有天然的集群自动组成方式。我们只需要简单的配置,节点就会自动组成集群。做分布式应用,es的集群策略是值得我们学习的!

一起看下和形成集群相关的参数配置

  • discovery.seed_hosts

    集群的节点列表(意思是指定哪些节点去进行通信,并形成集群)。

    1. 配置有两种形式:直接指定ip和端口号,多个用逗号分割。注意是ip:port的形式。如果不指定端口的话,默认是9300。9300是es节点间通信的端口。

      1. 如果地址是ipv4,举个栗子 ["10.10.10.10:9300", "10.10.10.11:9300"]

      2. 如果地址是ipv6,需要用中括号括起来。举个栗子 [ "10.10.10.10:9300", "[::1]:9300"]

    2. 也可以通过配置域名的方式。

      举个栗子: seeds.mydomain.com

      discovery.seed_hosts:- 192.168.1.10:9300- 192.168.1.11- seeds.mydomain.com- [0:0:0:0:0:ffff:c0a8:10c]:9301

  • discovery.seed_providers

    这个参数是用来指定读取集群列表的形式。默认情况下,我们是把地址放在了elasticsearch.yml下,从配置文件中修改。

    但是假如我们集群的节点需要动态调整的话,不太方便。所以官方给我们提供了其它的形式。比如放在一个单独的文件,我们可以动态的去修改它。

    下边的案例是我们指定配置的节点列表放在文件里。

    discovery.seed_providers: file

    然后我们在es的config目录下(和elasticsearch.yml同级的目录),创建一个名字为: unicast_hosts.txt 的文件,然后在文件中放入节点的列表:

    10.10.10.5
    10.10.10.6:9305
    10.10.10.5:10005
    # an IPv6 address 注意注释内容用 #开头
    [2001:0db8:85a3:0000:0000:8a2e:0370:7334]:9301

  • discovery.type

    该参数指定了es节点是集群模式。默认是 multi-node 。也就是集群模式,它允许新的节点进来。

    如果按照以下设置,则单个节点为一个集群。

    discovery.type: single-node

  • cluster.initial_master_nodes

    该参数指定哪些节点可以作为master节点。注意这里指定的是节点的名称。

    cluster.initial_master_nodes: - master-node-a- master-node-b- master-node-c

专家设置编辑

以下配置都是集群相关的配置,官方不建议修改。如果你熟悉它们,也可以修改!

  • discovery.cluster_formation_warning_timeout

    默认值 10s

    假如 经过了 10s,节点还没有形成集群,会记录一条warn级别的日志,

    discovery.cluster_formation_warning_timeout短语开头。master not discovered

  • discovery.find_peers_interval

    默认为1s.

    设置经过多长时间,进行一次集群发现。

  • discovery.probe.connect_timeout

    默认为 30s.

    设置尝试连接到每个地址时的等待时间。

  • discovery.probe.handshake_timeout

    默认为30s.

    设置尝试通过握手识别远程节点时等待多长时间。

  • discovery.request_peers_timeout

    默认为3s.

    设置节点在再次询问其对等方之后将等待多长时间,然后才认为请求失败。

  • discovery.find_peers_warning_timeout

    默认为3m.

    设置节点在开始记录描述连接尝试失败原因的详细消息之前尝试发现其对等点的时间。

  • discovery.seed_resolver.max_concurrent_resolvers

    默认为10.

    在节点发现时,节点列表中假如配置了域名的方式,进行DNS查询的并发数。

  • discovery.seed_resolver.timeout

    默认为5s.

    在节点发现时,节点列表中假如配置了域名的方式,每次DNS获取地址的超时时间。

  • cluster.auto_shrink_voting_configuration

    该参数指定是否在投票中排除离开的节点。假如一共四个节点,一个节点的机器坏了,我们认为该节点离开了。

    该参数默认为 true,代表会自动踢出离开的节点。前提是总的节点数大于等于3.

    假如设置为false,则不会踢出离开的节点,需要我们通过api来手动踢出。 voting configuration exclusions API.

  • cluster.election.back_off_time

    默认为 100ms.

    选举失败时,等待的时间。

    从默认值更改此设置可能会导致您的集群无法选择主节点。

  • cluster.election.duration

    默认为500ms.

    设置在选举失败以后每次选举花费多长时间。

    从默认值更改此设置可能会导致您的集群无法选择主节点。

  • cluster.election.initial_timeout

    这默认为 100ms.

    该参数指定在第一选举之前,或者选举失败以后,允许多长时间用来做节点的初始化工作。

    从默认值更改此设置可能会导致您的集群无法选择主节点。

  • cluster.election.max_timeout

    设置节点在尝试第一次选举之前等待多长时间的最大上限,防止因为网络不稳定有太多的节点没有加入进来。这默认为10s. 从默认值更改此设置可能会导致您的集群无法选择主节点。

  • cluster.fault_detection.follower_check.interval

    设置主节点检查从节点的等待时间。默认为1s. 从默认值更改此设置可能会导致您的集群变得不稳定。

  • cluster.fault_detection.follower_check.timeout

    设置主节点多长时间可以认为从节点不在了。

    默认为10s. 从默认值更改此设置可能会导致您的集群变得不稳定。

  • cluster.fault_detection.follower_check.retry_count

    主节点检查从节点的次数,在失败多少次以后,可以认为该节点不在了。

    默认为3.

    从默认值更改此设置可能会导致您的集群变得不稳定。

  • cluster.fault_detection.leader_check.interval

    设置每个节点在选举前等待的时间。

    默认为 1s.

    从默认值更改此设置可能会导致您的集群变得不稳定。

  • cluster.fault_detection.leader_check.timeout

    设置从节点判定主节点不在的时间.

    默认为10s.

    从默认值更改此设置可能会导致您的集群变得不稳定。

  • cluster.fault_detection.leader_check.retry_count

    设置从节点检查主节点是否存在的失败次数。

    默认为3. 超过三次以后则从节点可以认为主节点不在了。

    从默认值更改此设置可能会导致您的集群变得不稳定。

  • cluster.follower_lag.timeout

    集群状态在从节点更新的时间,默认是90s,如果集群状态在90s以后没有在从节点应用成功,则将该从节点从集群中移除。请参阅 发布集群状态。

  • cluster.max_voting_config_exclusions

    这个参数我暂时没明白是什么意思。

    (Dynamic) Sets a limit on the number of voting configuration exclusions at any one time. The default value is 10. See Adding and removing nodes.

  • cluster.publish.info_timeout

    默认值为10s

    主节点将集群状态应用在所有节点的时间。假如超过了默认值10s,则会记录一条日志。

  • cluster.publish.timeout

    设置主节点等待集群状态完全发布到所有节点的超时时间,除非discovery.type设置为 single-node。默认值为30s。请参阅发布集群状态。

  • cluster.no_master_block

    设置在没有master节点的时候不可以做的操作

    此设置具有三个有效值:

    1. all节点上的所有操作(读取和写入操作)都被拒绝。这也适用于 API 集群状态读取或写入操作,例如获取索引设置、更新映射和集群状态 API。

    2. write拒绝写操作。

    3. metadata_write只有元数据写入操作(例如映射更新、路由表更改)被拒绝,但常规索引操作继续工作。根据最后一个已知的集群配置,读取和写入操作成功。这种情况可能会导致部分读取过时数据,因为该节点可能与集群的其余部分隔离。该cluster.no_master_block设置不适用于基于节点的 API(例如,集群统计、节点信息和节点统计 API)。对这些 API 的请求不会被阻止,并且可以在任何可用节点上运行。要使集群完全运行,它必须有一个活动的主节点。

  • monitor.fs.health.enabled

    如果true,节点运行定期 文件系统健康检查。默认为true.

  • monitor.fs.health.refresh_interval

    每次文件系统检查的时间间隔 。默认为2m.

  • monitor.fs.health.slow_path_logging_threshold

    检查问阿金系统的时间超过该值,则 Elasticsearch 会记录警告日志。默认为5s.

索引生命周期相关的配置

集群方面配置:

  • indices.lifecycle.history_index_enabled

    默认为: true

    是否将 生命周期相关的操作记录到ilm-history-* indices.

  • indices.lifecycle.poll_interval

    默认:10m

    多久检查一次索引生命周期的策略。我们是可以修改索引的生命周期相关的配置的。

索引层面的配置

  • index.lifecycle.indexing_complete

    是否滚动创建索引。

    默认为false.

  • index.lifecycle.name

    用于管理索引的策略名称。有关 Elasticsearch 如何应用策略更改的信息,请参阅策略更新。

  • index.lifecyle.origination_date

    单位是long类型的时间戳

    记录首次创建索引的间。该时间会被用来计算索引的年龄。可以不指定,如果不指定,则需要用下边的参数,并且创建的索引名称为指定格式。

  • index.lifecycle.parse_origination_date

    是否自动识别首次创建索引的时间。这个时间用来计算索引的年龄。

    默认为true,当设置为true的时候,会自动从索引中通过名字识别首次创建索引的时间。前提是索引的名字为指定格式。索引名称必须与模式匹配^.*-{date_format}-\\d+,其中date_formatisyyyy.MM.dd和尾随数字是可选的。翻转的索引通常会匹配完整格式,例如logs-2016.10.31-000002)。如果索引名称与模式不匹配,则索引创建失败。

  • index.lifecycle.step.wait_time_threshold

    在 ILM操作期间等待集群解决分配问题的时间 。必须大于1h(1 小时)。默认为 12h(12 小时)。请参阅分片分配 收缩。

  • index.lifecycle.rollover_alias

    使用生命周期滚动创建索引要更新的索引别名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/123548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2023Mathorcup大数据】B题 电商零售商家需求预测及库存优化问题 python代码解析

【2023Mathorcup大数据】B题 电商零售商家需求预测及库存优化问题 python代码解析 1 题目 2023 年MathorCup 高校数学建模挑战赛——大数据竞赛赛道B:电商零售商家需求预测及库存优化问题电商平台存在着上千个商家,他们会将商品货物放在电商配套的仓库…

通道洗牌的思想神了

大家好啊,我是董董灿。 昨天写了一篇关于分组卷积的文章:分组卷积的思想神了,然后有同学希望多了解下通道洗牌。 我个人感觉,通道洗牌这个算法,或者说这个思想,可以称之为小而精,并且是实际解…

rust 创建多线程web server

创建一个 http server,处理 http 请求。 创建一个单线程的 web 服务 web server 中主要的两个协议是 http 和 tcp。tcp 是底层协议,http 是构建在 tcp 之上的。 通过std::net库创建一个 tcp 连接的监听对象,监听地址为127.0.0.1:8080. us…

NEFU数字图像处理(三)图像分割

一、图像分割的基本概念 1.1专有名词 前景和背景 在图像分割中,我们通常需要将图像分为前景和背景两个部分。前景是指图像中我们感兴趣、要分割出来的部分,背景是指和前景不相关的部分。例如,对于一张人物照片,人物就是前景&…

python把ChestX-Det-Dataset的json样本转为COCO数据集的json格式

ChestX-Det-Dataset数据集网址:https://github.com/Deepwise-AILab/ChestX-Det-Dataset/tree/main 数据集JSON内容: [{"file_name": "36199.png","syms": [],"boxes": [],"polygons": []},{"f…

Hadoop学习总结(搭建Hadoop集群(伪分布式模式))

如果前面有搭建过Hadoop集群完全分布式模式,现在搭建Hadoop伪分布式模式可以选择直接克隆完全分布式模式中的主节点(hadoop001)。以下是在搭建过完全分布式模式下的Hadoop集群的情况进行 伪分布式模式下的Hadoop功能与完全分布式模式下的Hadoop功能相同。 一、克隆…

DAY38 动态规划 + 509. 斐波那契数 + 70. 爬楼梯 + 746. 使用最小花费爬楼梯

动态规划理论 动态规划,Dynamic Programming, DP, 如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导…

buuctf_练[GYCTF2020]FlaskApp

[GYCTF2020]FlaskApp 文章目录 [GYCTF2020]FlaskApp常用绕过方法掌握知识解题思路解题一 -- 计算pin码解题二 -- 拼接绕过 执行命令 关键paylaod 常用绕过方法 ssti详解与例题以及绕过payload大全_ssti绕过空格_HoAd’s blog的博客-CSDN博客 CTF 对SSTI的一些总结 - FreeBuf网…

Spark UI中Shuffle dataSize 和shuffle bytes written 指标区别

背景 本文基于Spark 3.1.1 目前在做一些知识回顾的时候,发现了一些很有意思的事情,就是Spark UI中ShuffleExchangeExec 的dataSize和shuffle bytes written指标是不一样的, 那么在AQE阶段的时候,是以哪个指标来作为每个Task分区大…

了解单域名证书和通配符证书的区别,选择合适的SSL证书解决方案

随着互联网的不断发展,网站安全性问题一直备受关注,在保护网站数据安全的过程中,SSL证书一直发挥着至关重要的作用。而在选择SSL证书时,单域名证书和通配符证书是两种常见的选择。本文将详细介绍单域名证书和通配符证书的区别&…

Cocos Creator 中使用装饰器进行自动绑定

推荐一个偷懒的方式,使用装饰器自动绑定节点到脚本的属性 背景 用 Cocos Creator 写脚本组件的时候,有时需要场景中一个节点作为这个脚本的属性值。 按照官方文档推荐的方法,需要以下两步 添加一个 property 属性,在场景中拖入这个…

案例分析大汇总

案例分析心得 2018-2022年的案例分析考试内容汇总(近五年) 架构设计题型 软件系统建模 数据库 Web 系统设计 2018年 胖/瘦客户端 C/S 架构非功能性需求 数据流图DFDE-R图Essential Use Cases(抽象用例),Real Use Cases(基础用例)信息工…

双目视觉计算三维坐标

一、原理 双目视觉的基本原理,以及公式推导,我参考的b站上的视频,链接如下: 2-线性相机模型-Linear Camera Model-Camera Calibration_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Q34y1n7ot/?p2&spm_id_from333.…

Android底层摸索改BUG(二):Android系统移除预置APP

首先我先提供以下博主博文,对相关知识点可以提供理解、解决、思考的 Android 系统如何预装第三方应用以及常见问题汇集android Android.mk属性说明及预置系统app操作说明系Android 中去除系统原生apk的方法 取消预置APK方法一: 其实就是上面的链接3&a…

03、SpringCloud -- 动态倒计时 及 当前用户的获取(用户未登录提示其登录)

目录 动态倒计时需求思路代码效果优化获取当前登录用户思路代码前端后端controllerservice接口impl实现效果问题修改动态倒计时 需求 根据不同时间展示不同状态,动态显示时间,如原型图: 思

Lua脚本语言

1. 概念 Lua(发音为"loo-ah",葡萄牙语中的"lua"意为月亮)是一种轻量级的、高效的、可嵌入的脚本编程语言。官网Lua最初由巴西计算机科学家Roberto Ierusalimschy、Waldemar Celes和Luiz Henrique de Figueiredo于1993年开…

【JVM】字节码文件的组成部分

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 JVM 一、字节码文件的组成部分1.1 iconst_0…

idea 提升效率的常用快捷键 汇总

点击File --> Settings --> keymap便可进入看到 IDEA 提供的快捷键。我们也可以搜索和自定义所有快捷键 下面13个事我常用的快捷键,后面还有全部,可以当做字典来查 1.当前文件下查找:CtrlF 当前文件下替换:CtrlR 2.当前…

前端的简单介绍

前端核心的分析 CSS语法不够强大,比如无法嵌套书写,倒是模块化开发中需要书写很多重复的选择器 没有变量和合理的样式复用机制,使逻辑上相关的属性值必须字面量的心事重复的输出,导致难以维护 CSS预处理器,减少代码的笨重&#…

前端 :用HTML和css制作一个小米官网的静态页面

1.HTML&#xff1a; <body><div id "content"><div id "box"><div id "top"><div id "top-left"><span id "logo">MI</span><span id "text-logo">小米账…