Elasticsearch配置解析

本文介绍了Elasticsearch的配置文件详解,包括elasticsearch.yml、jvm.options和log4j2.properties。重点讨论了系统配置如最大文件描述符、内存锁定和虚拟内存映射,以及elasticsearch.yml中的关键设置,如集群名、节点名、数据路径和最小主节点数。强调了避免内存交换、禁用模糊匹配删除索引以及堆内存配置的注意事项,建议在生产环境中谨慎调整配置。

简介

Elasticsearch在官方文档中明确说明大多数默认值都已经做了优化,安装时只需要修改很少的配置即可。在Elasticsearch中很少有“神奇的配置项”,如果你遇到了性能问题,解决方法通常是更好的数据布局或者更多的节点。Elasticsearch有三个配置文件:

  • elasticsearch.yml:Elasticsearch配置文件
  • jvm.options:Elasticsearch对应JVM配置文件
  • log4j2.properties:Elasticsearch日志配置文件

配置文件的默认位置是在$ES_HOME/config目录下。可以通过ES_PATH_CONF环境变量更改config目录的位置:

ES_PATH_CONF=/path/to/my/config

系统配置

在安装Elasticsearch之前,首先需要对节点机器的系统配置进行合理设置(系统配置修改需要切换到root用户执行)。系统配置临时修改可以用ulimit命令,而永久修改则需要在/etc/security/limits.conf文件中增加相应配置。

最大文件描述符

Lucene使用了大量的文件。同时,Elasticsearch在节点和HTTP客户端之间进行通信也使用了大量的套接字。所有这一切都需要足够的文件描述符。Linux发行版本中,每个进程默认只允许1024个文件描述符,这对Elasticsearch节点来说实在是太低了。所以,应该增加节点机器上的文件描述符,设置一个较大的值,如65536:

# 临时修改,只对当前shell有效
ulimit -SHn 65536

# 永久变更需要修改/etc/security/limits.conf文件
vi /etc/security/limits.conf
* hard nofile 65536
* soft nofile 65536

linux系统中通常会对每个进程所能打开的文件数据有一个限制,当进程中已打开的文件描述符超过这个限制时,获取文件描述符的系统调用都会返回失败。linux下最大文件描述符的限制有两个方面,一个是用户级的限制,另外一个则是系统级限制。

用户级限制:ulimit命令看到的是用户级的最大文件描述符限制,也就是说每一个用户登录后执行的程序占用文件描述符的总数不能超过这个限制。

系统级限制:sysctl命令和proc文件系统中查看到的数值是一样的,这属于系统级限制,它是限制所有用户打开文件描述符的总和。

内存锁定限制

内存交换对节点的性能和稳定性非常不利,应该避免。需要让启动Elasticsearch时锁定内存,因此需要放开启动用户(如elasticsearch)锁定内存的限制,有以下两种方式:

# 临时修改,启动Elasticsearch前执行
ulimit -l unlimited

# 永久修改,放开用户elasticsearch锁定内存限制
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

虚拟内存映射最大数量

默认情况下,Elasticsearch使用mmapfs目录来存储其索引。mmap计数的默认操作系统限制太低,这会导致内存不足异常。需要在root用户下运行下面的命令来放开限制,以便有足够的虚拟内存可用于mmapped文件:

# 临时修改,root用户下执行
sysctl -w vm.max_map_count=2621
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值