Elasticsearch 调度、限流与缓存机制深度解析(上)
1. 合并调度器
Elasticsearch 允许我们在需要合并时定义合并策略的执行方式,有两种合并调度器可供选择,默认的是并发合并调度器(ConcurrentMergeScheduler)。
1.1 并发合并调度器
并发合并调度器使用多线程执行段合并。它会不断创建新线程,直到达到最大线程数。若达到最大线程数且仍需新线程进行段合并,所有索引操作将暂停,直到至少一个合并完成。
为控制允许的最大线程数,可修改index.merge.scheduler.max_thread_count属性,其默认值由以下公式计算:
maximum_value(1, minimum_value(3, available_processors / 2))例如,系统有 8 个处理器,并发合并调度器允许使用的最大线程数为 4。
需要注意的是,并发合并调度器对旋转磁盘不太友好,若合并操作过多,应降低合并线程数,通常旋转磁盘建议将线程数设为 1。
1.2 串行合并调度器
串行合并调度器使用同一线程进行合并,会停止同一线程上的其他文档处理,即停止索引操作。该调度器仅用于向后兼容,实际上是线程数为 1 的并发合并调度器。
1.3 设置合并调度器
要设置所需的合并调度器,可将index.merge.scheduler.type属性设置为c