Elasticsearch集群优化和管理
分片和副本的工作方式
在Elasticsearch中分片是最小的工作单元,保存索引数据中的一部分, 随着客户端发起的增删改查的操作,分片之间就会通过各种交互来完成客户端的请求
具体过程,看官网(有时间在整理)
影响Elasticsearch性能的因素
软件层面:
索引
分词器:在全文搜索中,搜索准不准确,和分词有很大关系,分词的工作是由分词器来做,分词器根据不同的语言,不同的算法设计,比如说中文、英文都有适合它的分词器,根据业务实际情况选择合适的分词器,分词器会影响索引大小,索引的大小会影响检索的速度。在关系型数据库中,数据库越大,查询速度会变慢,在elastic中也是一样,索引越大,查询速度也会变得越慢,分词器如果选择不正确,造成词表(分词器通过分词算法构建的词库)过大,间接影响索引变得庞大,词表如何影响索引大小
Segment数量:官方提供一个方法:optimize,可以将多个segment合并,合并的数量最小可以设置为1
optimize方法的参数
max_num_segments:段数优化,可设置值最小为1,这个值越小,查询的速度越快
only_expunge_deletes:该优化操作是否只清空打有删除标签的索引记录
flush:在执行完优化操作之后,在执行刷新操作,默认值为true
wait_for_merge:当该参数设置为true时,表示其他请求操作要等到合并segment操作结束只有,在进行相应。通常设置为false
例子:http://localhost:9200/indexName/_optimize?max_num_segments=1&only_expunge_deletes=true&wait_for_merge=false
分片数量
多,会导致交互多
少,会导致分片大
在实际生产环境中,根据相关经验,如果单个分片超过30G的大小,就开始有性能下降的现象,到了50G现象则更为明显,所以在索引初次建立的时候,根据自己的实际的业务情况,尽量的把分片定的多些,这样预留的空间较大
对于数据量较大的业务,可以使用数据冷热分离的方案,把旧的数据,以hdfs的方式备份存放到其他的节点里,或者其他的服务器,经常用到的新数据,可以放到elastic中,可以根据时间戳建索引,当分片快到30g的时候,以时间戳的形式,另建一个索引,旧的索引丢到hdfs中,这样可以有效缓解在大数据增长下分片变大带来的性能影响
副本数量:副本太多,性能会下降
系统层面
linux系统:linux的稳定性是公认的,
发行版:centons,如果有license支持,可以选择redhat
设置最大文件打开数:由于Elasticsearch会频繁打开和合并segment文件,所以在大数据流下,设置最大文件打开数是必须的
#查看当前最大文件打开数
ulimit -a
#设置最大文件打开数(S代表软件资源,H代表硬件资源,n代表设置的大小)
ulimit -SHn 65535
#上述方式,在服务器重启后就会失效,如果想服务器重启后仍然生效,需要在配置文件中修改
vim /etc/security/limits.conf
添加如下内容
* - nofile 65535 # - 代表软硬件资源
Linux(Cent欧式)的网络内核参数优化来提高服务器并发处理能力
Linux(Centos )的网络内核参数优化来提高服务器并发处理能力 - CSDN博客
物理层面
内存:单实例分配32G
硬盘:尽量大,RAID10,SSD
CPU:配置尽量高
网络:千兆,最好万兆
网友评论