elasticsearch基本参数配置

时间:2022-03-15 08:05:37

1、 JVM参数配置

配置合理的jvm参数,能够避免OOM(OutOfMemory),提高系统响应时间(减小GC停顿)。

1.1、 heap-size

-Xms32G -Xms32G

官方建议设置heap大小为操作系统的一半且最大不超过32G。

1)Lucene的设计目的是把底层OS里的数据缓存到内存中。Lucene的段是分别存储到单个文件中的,这些文件都是不会变化的,所以很利于缓存,同时操作系统也会把这些段文件缓存起来,以便更快的访问。把50%的内存留给Lucene能够有效的提高系统性能

2)heap超过32G JVM的指针压缩技术就会失效,会带来额外的资源消耗。建议最大heap不超过32G

3)-Xmx-Xms参数设置一致,为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源,可以减轻伸缩堆大小带来的压力。

 

参考文档请移步

https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html

 

1.2、 gc-log

-XX:+HeapDumpOnOutOfMemoryError

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-XX:+PrintGCDateStamps

-Xloggc:${loggc}

开启GC日志,方便线上出问题进行排查。

2、 分片(shards)设置

合理的设置分片数量使一个索引更均匀的分配在不同节点上,充分利用集群的计算能力,能够大大提高集群性能。

官方建议一个Node中一个索引最好不要多于三个shards。系统默认分片数量为5个,具体设置为多少要集群配置而定,设置分片数和集群节点数相等即可。

 

PS:分片数在创建索引时指定,已经设置不可更改。

 

3、 副本(replica)设置

副本有两个作用:

1.保证数据的可靠性,如果有节点数据丢失能够通过副本恢复。

2.提高系统查询性能,参与查询提高查询性能。

一般副本设置为3。

4、 禁止swapping

内存交换是把内存中的数据暂时缓存到磁盘上,磁盘的读写性能要比内存慢很多。Lucene的设计目的是把底层OS里的数据缓存到内存中,如果启用内存交换会大大降低系统的性能。

1. 修改swapping参数,内存不够用时才进行swapping(vm.swappiness= 1)。

2.锁定内存,不让JVM写入swapping,避免降低ES的性能(bootstrap.mlockall: true)。