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。

相关推荐
laoma-cloud12 分钟前
数据库高可用全方案:Keepalived 故障切换 + LVS (DR) 模式 + MariaDB 主主同步实战案例
运维·数据库集群
Hi2024021743 分钟前
基于阿里云部署 RustDesk 自托管服务器
运维·服务器·阿里云·云计算·远程控制·远程桌面
豆是浪个1 小时前
Linux(Centos 7.6)命令详解:sar
linux·运维·centos
fie88891 小时前
CentOS下Bind服务的安装与故障排查
linux·运维·centos
少陽君1 小时前
如何使用自签 CA 签发服务器证书与客户端证书
运维·服务器
成长之路5141 小时前
【面板数据】各省制造业出口技术复杂度数据集(2010-2023年)
大数据
翰林小院1 小时前
【大数据专栏】大数据框架-Apache Druid Overview
大数据·durid
東雪蓮☆2 小时前
Linux 网络流量监控 Shell 脚本详解(支持邮件告警)
linux·运维·服务器
三无少女指南2 小时前
WSL2环境下因服务器重装引发的SSH连接问题排查记录
运维·服务器·ssh
Learn Beyond Limits3 小时前
Error metrics for skewed datasets|倾斜数据集的误差指标
大数据·人工智能·python·深度学习·机器学习·ai·吴恩达