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。

相关推荐
鸭鸭鸭进京赶烤3 小时前
大学专业科普 | 云计算、大数据
大数据·云计算
一心0923 小时前
ubuntu 20.04.6 sudo 源码包在线升级到1.9.17p1
运维·ubuntu·sudo·漏洞升级
好好学习啊天天向上3 小时前
世上最全:ubuntu 上及天河超算上源码编译llvm遇到的坑,cmake,ninja完整过程
linux·运维·ubuntu·自动性能优化
ldj20204 小时前
Jenkins 部署脚本
jenkins
你想考研啊4 小时前
三、jenkins使用tomcat部署项目
运维·tomcat·jenkins
代码老y4 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
典学长编程5 小时前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
G皮T6 小时前
【Elasticsearch】自定义评分检索
大数据·elasticsearch·搜索引擎·查询·检索·自定义评分·_score
你想考研啊7 小时前
四、jenkins自动构建和设置邮箱
运维·jenkins
Code blocks7 小时前
使用Jenkins完成springboot项目快速更新
java·运维·spring boot·后端·jenkins