9、Elasticsearch 性能优化

集群脑裂优化设置
增大系统打开文件数
合理设置JVM内存
锁定物理内存
合理设置分片
合理设置副本数
合并索引
关闭索引
清除删除文档
合理数据导入
设置索引_all
设置索引_source
版本一致

集群脑裂优化设置

产生原因:
1、网络原因(不同网段)
2、节点负载
  由于master与data节点是混合在一起的,所以当工作节点的负载较大时,导致对应的es实例停止响应,而这台服务器如果正充当着master节点的身份,
  那么这一部分的节点就会认为这个master节点失效,故重新选举新的节点,这时就出现了脑裂
3、回收内存
  由于data节点上es进程占用内存大,较大规模的内存回收操作也可能造成es进程失去响应


解决办法:
1、master与data节点的分离,推测出原因应是由于节点负载导致了master进程停止响应,继而导致了部分节点对于master的选择出现了分歧,为此,一个直观的解决方案,
  便是将master节点与data节点分离。为此,我们添加了
  三台服务器进入es集群,不过他们的角色知识master节点,不担任存储和搜索的角色,故他们是相对轻量级的进程。可以通过以下配置来限制其角色
  node.master: true
  node.data: false
  当然其他的节点就不能担任master了,把上面的配置反过来即可。

为了使新加入的节点快速确定master位置,可以将data节点的默认master发现方式由multicast 修改为unicast
  discovery.ping.multicast.enabled: false
  discovery.ping.unicast.hosts: ["master1","master2","master3"]
  
  es的集群是内嵌自动发现功能的,只需要在每个几点配置好集群名称,节点名称,互相通信的节点会根据es自定义的服务发现协议去按照多播的方式来寻找网络上配置在同样集群内的节点
  
  discovery.zen.ping_timeout: 10 ,增加等待响应的时间
  discovery.zen.minimum_master_nodes: 3 一个几点需要看到的具有master节点资格的最小数量(一半以上)

 

增大系统打开文件数

ulimit -a 查看
ulimit -n 64000

 

合理设置JVM内存

修改jvm.options中-Xms和-Xmx的大小
-Xms1g
-Xmx1g

 

锁定物理内存

设置memory_lock来锁定进程的物理内存地址,避免内存交换(swapped)来提高性能


vim /config/elasticsearch.yml
bootstrap.memory_lock: true

 

合理设置分片

5-20个

简易每个分片最多存储20G左右的所有数据。
n=数据总量/20G

www.elastic.cn/guide/en/elsaticsearch/reference/current/indices-create-index.html

 

合理设置副本数

www.elastic.cn/guide/en/elsaticsearch/reference/current/indices-create-index.html

 

合并索引

定时对索引进行合并优化,segment越多,占用的segment memory越多,查询的性能也越差。

1、索引量不大的情况下,可以将segment设置为1
2、在es2.1.0以前调用 _optimize接口,后期改为_forcemerge接口
curl -u elastic:123456 -XPOST 'http://master:9200/test/_forcemerge?max_num_segments=1'

 

关闭索引

 

清除删除文档

 

合理数据导入

 

设置索引_all

 

设置索引_source

 

版本一致

 

posted @ 2019-06-16 16:23  慕沁  阅读(291)  评论(0)    收藏  举报