ELK日志分析平台——ElasticSearch性能优化

目录

ES优化(1)-集群脑裂优化设置 

ES优化(2)-增大系统打开文件数

ES优化(3)-合理设置JVM内存

ES优化(4)-锁定物理内存

ES优化(5)-合理设置分片

ES优化(6) -合理设置副本数

ES优化(7)-合并索引

ES优化(8) -关闭索引

ES优化(9) -清除删除文档 

ES优化(10)-合理数据导入

ES优化(11) -设置索引_all 

ES优化(12) 设置索引_source

ES优化(13) -版本


ES优化(1)-集群脑裂优化设置 

https://download.csdn.net/download/weixin_39855998/11587217

ES优化(2)-增大系统打开文件数

调大系统的“最大打开文件数”,建议32K甚至是64K。 ulimit -a (查看) ulimit -n 32000(设置) 

ES优化(3)-合理设置JVM内存

修改配置文件调整ES的JVM内存大小。  
修改jvm.options中-Xms和-Xmx的大小, 建议设置一样大,避免频繁的分配内存。根据服务器内存大小,一般 分配60%左右(默认1g)

ES优化(4)-锁定物理内存

设置memory_lock来锁定进程的物理内存地址 避免内存交换(swapped)来提高性能 
修改文件 vi config/elasticsearch.yml bootstrap.memory_lock: true

ES优化(5)-合理设置分片

适当增大分片,可以提升建立索引的能力,5-20个比较合适。如果分片数过少或过多,都会导致检索比较慢。分片数过多,会导致检索时打开文件较多,另外也会导致多台服务 器之间通讯,影响效率。 
分片数过少会导至单个分片索引过大,所以检索速度慢。 
建议单个分片最多存储20G左右的索引数据,通用计算公式:分片 数量=数据总量/20G 
地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/indice s-create-index.html

ES优化(6) -合理设置副本数

增加副本,可以提升搜索的能力。 
如果副本设置过多,会对服务器造成额外的压力,因为主分片需要 给所有副本同步数据。另外,副本过多也会占用磁盘空间。 
一般建议最多设置2-3个即可 
地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/indice s-create-index.html 

ES优化(7)-合并索引

定时对索引进行合并优化,segment越多,占用的 segment memory越多,查询的性能也越差。 
 1)索引量不大的情况下,可以将segment设置为1。 
 2)在es2.1.0以前调用_optimize接口,后期改为 _forcemerge接口。 curl -u elastic:123456 -XPOST 'http://master:9200/test/_forcemerge?max_num_segment s=1' 

ES优化(8) -关闭索引

针对不使用的index,建议close,减少内存占用。 
 只要索引处于open状态,索引库中的segement就会占用内 存,close之后就只会占用磁盘空间不会占用内存。 

curl -u elastic:123456 -XPOST 'master:9200/test/_close' 

ES优化(9) -清除删除文档 

在Lucene中删除文档,数据不会马上在硬盘上清除,而是 在lucene索引中产生一个.del的文件,然而在检索过程中这 部分数据也会参与检索,lucene在检索过程会判断是否删 除,如果已经删除,再过滤掉,这样也会降低检索效率。 
可以执行清除删除文档命令: curl -u elastic:123456 -XPOST 'http://master:9200/test/_optimize?only_expunge_deletes =true' 

ES优化(10)-合理数据导入

如果在项目开始阶段,需要批量入库大量数据,建议将副本数设置 为0。因为es在索引数据的时候,如果副本已经存在,数据会立即同步 到副本中,这样会对es增加压力。等到索引完成后,再恢复副本数即可,可以提高索引效率。 
curl -XGET http://master:9200/test/_settings?pretty 
 
curl -H "Content-Type:application/json"  -XPUT 'http://master:9200/test/_settings' -d '{"index":{"number_of_replicas":0}}' 
 
curl -H "Content-Type:application/json"  -XPUT 'http://master:9200/test/_settings' -d '{"index":{"number_of_replicas":1}}' 

ES优化(11) -设置索引_all 

去掉mapping中_all域,Index中默认会有_all的域,虽然会 给查询带来方便,但是会增加索引时间和索引尺寸。 
 
地址: https://www.elastic.co/guide/en/elasticsearch/reference/cu rrent/mapping-all-field.html 

ES优化(12) 设置索引_source

_source字段我在们进行检索时相当重要。 
 
ES默认检索只会返回ID,如果在{"enabled":false}情况下, 你需通过根据这个ID去去倒排索引中去取每个Field数据, 效率不高。而反之,在{"enabled":true}的情况下可以根据 ID直接检索对应source JSON的字段,不用去倒排索引去 按Field取数据。 
 
地址: https://www.elastic.co/guide/en/elasticsearch/reference/cu rrent/mapping-source-field.html 

ES优化(13) -版本

使用Java代码操作es集群,要保证本地es的版本和集群上 es的版本保持一致。 Ø 保证集群中每个节点的JDK版本和es配置一致。 

 

发布了64 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_39855998/article/details/99944653