ElasticSearch 索引性能调优

AI + 网络安全商业案例白皮书,快来下载!”

#使用 bulk 使用 Bulk 代替单文档索引,为了知道究竟多大的 bulk 请求性能最好,你可以用单节点单分片来跑基准测试,100、200 不断的往上加,由于一次塞太多的数据给 ES 索引会给它造成比较大的内存压力,所以。。自己看着办,差不多就好了

#使用多线程技术发送数据

单线程的 bulk 往往达不到 ES 集群的最大性能,所以用多线程来提高索引速度是个不错的方法。当 ES 回 TOO_MANY_REQUESTS (429) 这个状态码的时候,就说明我们需要把线程数量减少了。

#增加刷新间隔 ES 默认的索引刷新间隔 index.refresh_interval 是 1s,到了这个周期后,ES 就会创建一个新的段,把这个值加大来允许段能够有更长的刷新周期,这样就可以减少段合并的压力,也可以增加每次段合并的数据量

#启动的时候禁用 refreshreplicas 如果在需要一次性加载大量的数据,你可以禁用掉 index.refresh_interval 设置为 - 1, 然后把 index.number_of_replicas 设置为 0. 不过这有可能会让你在某些情况下丢失一些分片的数据。但是由于一份数据只会被索引一次,所以性能会提高不少,索引完后,再把这 2 个值改回来就好了

#关掉系统的 swap 关掉系统的 swap,省得它不够内存还在那里交换

#分配更多的内存 这个就。。。没什么好说的了

#使用自动生成 ID 假如不是用自动生成的 id,ES 每次索引数据都要检查是不是已经存在了,使用 auto-generated id 的话 ES 会跳过检查,会快很多

#使用更快的硬件

用 SSD 当然是更好的选择啦,组个 RAID 也是极好的

#控制索引缓存大小 如果你的节点只是做高负载的索引操作,把 indices.memory.index_buffer_size 设置大一些,ES 会使用这些内存来给所有的活动分片做共享。一般都给总内存的 10%,例如 JVM 分了 10G,那么就分它 1G,一般情况下就够两个索引负载很高的分片进行索引了

首页 - Wiki
Copyright © 2011-2025 iteam. Current version is 2.148.1. UTC+08:00, 2025-11-22 03:10
浙ICP备14020137号-1 $访客地图$