elasticsearch线程池配置

在Elasticsearch中,默认的线程池配置如下:

search线程池

  • 用途:用于处理搜索请求。

  • 特点:

    • 类型为fixed,即固定大小的线程池。

    • 线程数根据分配给Elasticsearch的处理器数量动态计算,以确保搜索请求能够并行处理,提高搜索性能。

    • 队列大小限制了等待执行的搜索任务数量,防止过多任务积压导致系统过载。

  • 线程数:int((# of allocated processors * 3) / 2) + 1

  • 队列大小:1000

search_throttled线程池

  • 用途:用于处理被限制的搜索请求,如慢查询或需要降低优先级的查询。

  • 特点:

    • 类型为fixed

    • 线程数固定为1,意味着这些请求会被顺序执行,避免对系统资源造成过大压力。

    • 队列大小限制了等待执行的被限制搜索任务数量。

  • 线程数:1

  • 队列大小:100

search_coordination线程池

  • 用途:用于协调跨多个分片的搜索请求。

  • 特点:

    • 类型为fixed

    • 线程数根据处理器数量的一半计算,以平衡协调任务的负载。

    • 队列大小限制了等待执行的协调任务数量。

  • 线程数:(# of allocated processors) / 2

  • 队列大小:1000

get线程池

  • 用途:用于处理获取文档的请求。

  • 特点:

    • 类型为fixed

    • 线程数和队列大小与search线程池类似,确保获取操作能够高效并行执行。

  • 线程数:int((# of allocated processors * 3) / 2) + 1

  • 队列大小:1000

write线程池

  • 用途:用于处理写入操作,如索引、删除和更新文档。

  • 特点:

    • 类型为fixed

    • 线程数与处理器数量相等,确保写入操作能够充分利用多核处理器的性能。

    • 队列大小较大,允许更多的写入任务排队等待执行。

  • 线程数:# of allocated processors

  • 队列大小:10000

  • 最大线程数:1 + (# of allocated processors)

snapshot线程池

  • 用途:用于处理快照创建和恢复操作。

  • 特点:

    • 类型为scaling,即可伸缩的线程池。

    • 最小线程数为1,最大线程数根据节点的堆内存大小和处理器数量动态调整,以优化快照操作的性能。

  • 最小线程数:1

  • 最大线程数:在节点的堆内存至少为750MB时,默认为10;在节点的堆内存小于750MB时,默认为min(5, (# of allocated processors) / 2)

  • 线程保持时间:5m

snapshot_meta线程池

  • 用途:用于处理快照元数据相关操作。

  • 特点:

    • 类型为scaling

    • 最小线程数为1,最大线程数根据处理器数量动态调整,确保元数据操作能够高效执行。

  • 最小线程数:1

  • 最大线程数:min(50, (# of allocated processors * 3))

  • 线程保持时间:5m

warmer线程池

  • 用途:用于执行索引缓存预热操作。

  • 特点:

    • 类型为scaling

    • 最小线程数为1,最大线程数根据处理器数量动态调整,以优化缓存预热的性能。

  • 最小线程数:1

  • 最大线程数:min(5, (# of allocated processors) / 2)

  • 线程保持时间:5m

refresh线程池

  • 用途:用于执行索引刷新操作,将内存中的变更写入磁盘。

  • 特点:

    • 类型为scaling

    • 最小线程数为1,最大线程数根据处理器数量动态调整,确保刷新操作能够及时完成。

  • 最小线程数:1

  • 最大线程数:min(10, (# of allocated processors) / 2)

  • 线程保持时间:5m

force_merge线程池

  • 用途:用于执行索引段合并操作,以优化存储和查询性能。

  • 特点:

    • 类型为fixed

    • 线程数根据处理器数量的1/8计算,确保合并操作能够并行执行,但不会占用过多资源。

  • 线程数:max(1, (# of allocated processors) / 8)

  • 队列大小:无限制

management线程池

  • 用途:用于执行集群管理和节点内部的管理任务。

  • 特点:

    • 类型为scaling

    • 最小线程数为1,最大线程数为5,确保管理任务能够及时响应,同时避免对系统资源造成过大压力。

  • 最小线程数:1

  • 最大线程数:5

  • 线程保持时间:5m

index线程池

  • 用途:用于处理索引相关的操作,如文档的索引、删除和更新

  • 特点:

    • 类型为fixed
  • 线程数:min(5 * (# of allocated processors), 50)。线程数是分配给Elasticsearch的处理器数量的5倍,但最大不超过50

  • 队列大小:默认为1000

配置方法

elasticsearch.yml中配置线程池

|----------------------------------------------------------------------------------------------------------------------------------------------------------|
| thread_pool: search: size: 30 queue_size: 1000 write: size: 20 queue_size: 500 在这个例子中,search线程池的线程数被设置为30,队列大小为1000;write线程池的线程数被设置为20,队列大小为500。 |

修改elasticsearch.yml文件中的线程池配置后,需要重启Elasticsearch服务才能使配置生效。

动态配置

Elasticsearch也支持通过API动态地修改线程池配置,而不需要重启服务。例如,可以使用以下API来动态修改线程池配置:

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| curl -XPUT 'localhost:9200/_cluster/settings' -d '{ "transient": { "threadpool.index.type": "fixed", "threadpool.index.size": 100, "threadpool.index.queue_size": 500 } }' |

这个API会将index线程池的类型设置为fixed,线程数设置为100,队列大小设置为500。

相关推荐
还是大剑师兰特25 分钟前
Flink面试题及详细答案100道(1-20)- 基础概念与架构
大数据·flink·大剑师·flink面试题
Demisse2 小时前
[Linux] Linux文件系统基本管理
linux·运维·服务器
水无痕simon2 小时前
5 索引的操作
数据库·elasticsearch
BAOYUCompany2 小时前
暴雨服务器:以定制化满足算力需求多样化
运维·服务器
禁默4 小时前
进程替换:从 “改头换面” 到程序加载的底层逻辑
linux·运维·服务器
189228048614 小时前
NY243NY253美光固态闪存NY257NY260
大数据·网络·人工智能·缓存
武子康4 小时前
大数据-70 Kafka 日志清理:删除、压缩及混合模式最佳实践
大数据·后端·kafka
Python私教6 小时前
Docker in Test:用一次性的真实环境,终结“测试永远跑不通”魔咒
运维·docker·容器
CCF_NOI.6 小时前
解锁聚变密码:从微观世界到能源新未来
大数据·人工智能·计算机·聚变
张3蜂6 小时前
深度解读 Browser-Use:让 AI 驱动浏览器自动化成为可能
运维·人工智能·自动化