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。

相关推荐
Sayai20 分钟前
DataX 离线数据同步实战:Elasticsearch 数据批量导出 MySQL(作业配置、并发调优与定时同步平台化设计)
大数据·mysql·elasticsearch·datax·数据同步
别动我齐刘海1 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
171320330计算机毕设编程1 小时前
计算机毕业设计 基于YOLO改进算法的车辆特征识别系统设计与实现--lw
java·大数据·python·sql·算法
honsor1 小时前
机房IP化改造首选:以太网温湿度传感器,PoE供电+Modbus TCP一网搞定
linux·运维·服务器
星创易联1 小时前
PLC数据采集与远程运维平台:从边缘计算到集中监控
大数据·运维·边缘计算
亲笔签1 小时前
“场景重庆”典型案例 | 数字笔迹技术赋能政务服务 打造可信电子签署创新场景
大数据·人工智能
198******126342 小时前
2026 企业 AI 办公工具选型指南:搭建适配业务的智能工作体系
大数据·人工智能·数据挖掘
Elastic 中国社区官方博客2 小时前
Kibana:创建包含时间序列图表的仪表板
大数据·elasticsearch·搜索引擎·信息可视化·全文检索·kibana
大大大大晴天2 小时前
每天认识一个组件:Apache Paimon
大数据
寻道模式2 小时前
【运维心得】完整教程:绕过Win11限制让老机焕发新生
运维·操作系统·win11