第九章:Elasticsearch集群优化及相关节点配置说明
Linux系统调优:
- Linux调整打开文件数(重新启动生效)
在/etc/security/limits.conf在文件中增加:
* soft nofile 8192
* hard nofile 20480
* - memlock unlimited
索引优化:
- 设置集群副本不要过多,不是越多越好,起初设置成"index.number_of_replicas": 0,后期可使用_settings方法对副本进行调整优化效率。方法:wf_mds_chn_claw/_settings、PUT、{"index.number_of_replicas":"1"}。
- 检索建立索引时配置:
"index.refresh_interval": "-1",
"index.translog.flush_threshold_ops": "100000"
第一个参数表示: 数据达到多少条进行平衡,默认为5000,而这个过程相对而言是比较浪费时间和资源的。所以我们可以将这个值调大一些还是设为-1关闭,进而手动进行tranlog平衡。
第二个参数表示: 刷新频率,默认为120s是指索引在生命周期内定时刷新可以将其关闭,在最初索引完后手动refresh,后期按需求进行修改,从而可以提高索引过程效率。
ES集群文件配置:
1. 分配一台服务器做负载均衡,将配置修改为:
a) node.master: false
b) node.data: false
2. 锁定内存,因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过`ulimit-l unlimited`命令,将配置修改为:
a) bootstrap.mlockall:true
3. 因为gc时会使jvm停止工作,如果某个节点gc时间过长,master ping3次(zen discovery默认ping失败重试3次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配。所以优化gc,减少gc时间并调大zen discovery的重试次数,将配置修改为:
a) discovery.zen.ping.timeout: 60s
b) monitor.jvm.gc.ParNew.warn: 1000ms
c) monitor.jvm.gc.ConcurrentMarkSweep.warn: 10s
4. 依据系统设置文件存储类型。mmapfs是使用在windows的64bit系统上,simplefs是使用在windows的32bit上,在2.X版本中默认使用default_fs适用系统Linux一般默认使用的是hybrid niofs和mmapfs,将配置修改为:
a) index.store.type: mmapfs
5. 设置约定的内存大小时会自动清理多久没有访问到的数据会被驱逐设置:
a) index.fielddata.cache.size: 50%
b) index.fielddata.cache.expire: 5m
第一个参数:配置fieldData的Cache大小,可以配百分比也可以配一个准确的数值。cache到达约定的内存大小时会自动清理,驱逐一部分FieldData数据以便容纳新数据。默认值为unbounded
无限。
第二个参数:用于约定多久没有访问到的数据会被驱逐,默认值为-1,即无限。expire配置不推荐使用,按时间驱逐数据会大量消耗性能。而且这个设置在不久之后的版本中将会废弃。
6. 多磁盘存储数据或日志以都好分隔,将配置修改为:
a) path.data: /data/elasticsearch/data,/data1/elasticsearch/data
b) path.logs: /data/elasticsearch/log, /data1/elasticsearch/log
7. 设置集群中N个节点启动时进行数据恢复默认为1,此处依据集群数量进行相关配置,将配置修改为:
a) gateway.recover_after_nodes:2
8. 针对大数量集群可以设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4),将配置修改为:
a) discovery.zen.minimum_master_nodes: 1
9. 将多播发现节点设置为False, 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点,将配置修改为:
a) discovery.zen.ping.multicast.enabled: false
b) discovery.zen.ping.unicast.hosts: ["168.162.100.6", "168.162.101.7", "168.162.102.8"]
elasticsearch.yml参数说明
1. cluster.name: elasticsearch
集群名称,同一网段设置统一名称会自动识别。
2. node.name: "Test"
集群节点名。
3. node.master: true
设置master节点,默认是true。
4. node.data: true
该节点是否存储索引数据,默认为true。
5. index.number_of_shards: 5
索引默认分片数,默认为5片。
6. index.number_of_replicas: 1
索引默认副本数,默认为1个副本。
7. path.conf: /path/to/conf
配置文件存储路径,默认是es根目录下的config文件夹。
8. path.data: /path/to/data
索引存储路径,默认是es根目录下的data文件夹。
9. path.work: /path/to/work
临时文件存储路径,默认是es根目录下的work文件夹。
10. path.logs: /path/to/logs
日志文件存储路径,默认是es根目录下的logs文件夹。
11. path.plugins: /path/to/plugins
插件存储路径,默认是es根目录下的plugins文件夹
12. network.bind_host: 192.168.0.1
设置绑定的ip地址,默认为0.0.0.0。
13. network.publish_host: 192.168.0.1
设置与该节点交互的ip地址。
14. network.host: 192.168.0.1
同时设置bind_host和publish_host两个参数。
15. transport.tcp.port: 9300
节点间交互的tcp端口,默认是9300。
16. transport.tcp.compress: true
设置是否压缩tcp传输时的数据,默认为false,不压缩。
17. http.port: 9200
设置对外服务的http端口,默认为9200。
18. http.max_content_length: 100mb
设置内容的最大容量,默认100mb。
19. http.enabled: false
是否使用http协议对外提供服务,默认为true,开启。
20. gateway.recover_after_nodes: 1
设置集群中N个节点启动时进行数据恢复,默认为1。
21. gateway.recover_after_time: 5m
设置初始化数据恢复进程的超时时间,默认是5分钟。
22. gateway.expected_nodes: 2
设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。
23. cluster.routing.allocation.node_initial_primaries_recoveries: 4
初始化数据恢复时,并发恢复线程的个数,默认为4。
24. cluster.routing.allocation.node_concurrent_recoveries: 2
添加删除节点或负载均衡时并发恢复线程的个数,默认为4。
25. indices.recovery.max_size_per_sec: 0
设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。
26. indices.recovery.concurrent_streams: 5
设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。
27. discovery.zen.minimum_master_nodes: 1
设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4)
28. discovery.zen.ping.timeout: 3s
设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。
29. discovery.zen.ping.multicast.enabled: false
设置是否打开多播发现节点,默认是true。
30. discovery.zen.ping.unicast.hosts: ["host1", "host2:port", "host3[portX-portY]"]
设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。
下面是一些查询时的慢日志参数设置
index.search.slowlog.level: TRACE
index.search.slowlog.threshold.query.warn: 10s
index.search.slowlog.threshold.query.info: 5s
index.search.slowlog.threshold.query.debug: 2s
index.search.slowlog.threshold.query.trace: 500ms
index.search.slowlog.threshold.fetch.warn: 1s
index.search.slowlog.threshold.fetch.info: 800ms
index.search.slowlog.threshold.fetch.debug:500ms
index.search.slowlog.threshold.fetch.trace: 200ms
第九章:Elasticsearch集群优化及相关节点配置说明的更多相关文章
- Elasticsearch 集群优化-尽可能全面详细
Elasticsearch 集群优化-转载参考1 基本配置 基本配置,5台配置为 24C 125G 17T 的主机,每台主机上搭建了一个elasticsearch节点. 采用的elasticsearc ...
- Elasticsearch集群优化
版本配置: ES版本:6.2.4 OS内存64G. 一.参数配置: ES jvm内存31G. vi /etc/sysctl.conf vm.swappiness = 1 elasticsearch.y ...
- 剖析Elasticsearch集群系列第一篇 Elasticsearch的存储模型和读写操作
剖析Elasticsearch集群系列涵盖了当今最流行的分布式搜索引擎Elasticsearch的底层架构和原型实例. 本文是这个系列的第一篇,在本文中,我们将讨论的Elasticsearch的底层存 ...
- Elasticsearch 集群和索引健康状态及常见错误说明
之前在IDC机房线上环境部署了一套ELK日志集中分析系统, 这里简单总结下ELK中Elasticsearch健康状态相关问题, Elasticsearch的索引状态和集群状态传达着不同的意思. 一. ...
- Elasticsearch集群架构的部署和调优(一)
[root@es-node1 ~]# mkdir /usr/java[root@es-node1 ~]# tar zxvf jdk1.8.0_131.tar.gz -C /usr/java/ [roo ...
- Elasticsearch学习总结 (Centos7下Elasticsearch集群部署记录)
一. ElasticSearch简单介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...
- 解剖 Elasticsearch 集群 - 之一
解剖 Elasticsearch 集群 - 之一 本篇文章是一系列涵盖 Elasticsearch 底层架构和原型示例的其中一篇.在本篇文章中,我们会讨论底层的存储模型以及 CRUD(创建.读取.更新 ...
- 剖析Elasticsearch集群系列之一:Elasticsearch的存储模型和读写操作
转载:http://www.infoq.com/cn/articles/analysis-of-elasticsearch-cluster-part01 1.辨析Elasticsearch的索引与Lu ...
- 实战之elasticsearch集群及filebeat server和logstash server
author:JevonWei 版权声明:原创作品 实战之elasticsearch集群及filebeat server和logstash server 环境 elasticsearch集群节点环境为 ...
随机推荐
- lsof恢复进程打开的文件
工作原理:进程每打开文件都会生成一个文件句柄FD来标识一个文件,进程打开的文件如果没有被释放,可以通过文件句柄FD来恢复删除的文件 注意:适合恢复进程一直在打开一个文件,例如日志文件,如果配置文件进程 ...
- Struts2 + Hibernate3.3 开发简单的登录注册功能【J2EE】
开发环境: IDE:Myeclipse10.0 数据库:Oracle(SQL Developer) Web容器:Tomcat 7.0 JDK:1.6 Struts:2.0 Hibernate:3.3 ...
- 【我要学python】愣头青之小数点精度控制
写在最前面:今天遇到了棘手的问题,看了两遍才看懂,本文属于转载+修改,原出处是Herbert's Blog 基础 浮点数是用机器上浮点数的本机双精度(64 bit)表示的.提供大约17位的精度和范围从 ...
- 小试牛刀之Django
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- 洛谷——P1478 陶陶摘苹果(升级版)
题目描述 又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力 ...
- Codeforces Beta Round #14 (Div. 2) Two Paths (树形DP)
Two Paths time limit per test 2 seconds memory limit per test 64 megabytes input standard input outp ...
- 【BZOJ 1084】 1084: [SCOI2005]最大子矩阵 (DP)
1084: [SCOI2005]最大子矩阵 Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. Input 第 ...
- BZOJ 3282 Tree(动态树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3282 [题目大意] 0:后接两个整数(x,y),代表询问从x到y的路径上的点的权值的x ...
- BZOJ 1098 [POI2007]办公楼biu(反向图bfs+并查集优化)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1098 [题目大意] 现在有一张图,要求将这张图的点划分为尽量多的分组,对于不同分组的两 ...
- 邮件发送javamail
写在前面: 最近要将dms系统原始发邮件的功能(调用的webservice)改变成使用smtp服务来发送邮件(使用javamail来发送),这里简单记录下,方便日后有用到,直接拿来用即可. 首先导入需 ...