elasticsearch6.x官方文档学习笔记----ElasticSearch参数配置

配置ElasticSearch

主要介绍了ES上线前

重要的基本配置

重要的系统基本配置

设置JVM参数

此文件的默认位置是config/jvm.options(从tar或zip发行版/etc/elasticsearch/jvm.options安装时)和(从Debian或RPM软件包安装时)。

此文件包含遵循特殊语法的以行分隔的JVM参数列表:

  • 仅包含空格的行被忽略
  • 以...开头的行#被视为注释,并被忽略

  • 以-开头的行被视为JVM选项,该选项独立于JVM的版本而应用:
- Xmx2g
  • 以数字开头后跟 :后跟-的行被视为JVM选项,仅当JVM的版本与数字匹配时才适用:
8 : - Xmx2g
  • 以数字开头后跟 -后跟:的行被视为JVM选项,仅当JVM的版本大于或等于数字时才适用:
8 - : - Xmx2g
  • 以数字开头后跟 -后跟数字后跟:的行被视为JVM选项,仅当JVM的版本落在两个数字的范围内时才适用:
8 - 9 : - Xmx2g

您可以向该文件添加自定义JVM标志。

设置Java虚拟机选项的另一种机制是通过ES_JAVA_OPTS环境变量。例如:

export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"
./bin/elasticsearch

当使用RPM或Debian包时,可以在系统配置文件中指定ES_JAVA_OPTS。

安全的配置

有些设置是敏感的,仅依靠文件系统权限来保护它们的值是不够的。对于这个用例,Elasticsearch提供一个密钥存储库和Elasticsearch密钥存储库工具来管理密钥存储库中的设置。

详情请见官方文档。

ES重要的配置

path.data and path.logs

在生产使用中,您几乎肯定希望更改数据和日志文件夹的位置:

path:
  logs: /var/log/elasticsearch
  data: /var/data/elasticsearch

data的路径设置可以设置为多个路径,在这种情况下,所有路径都将用于存储数据(尽管属于单个碎片的文件都将存储在相同的数据路径上):

path:
  data:
    - /mnt/elasticsearch_1
    - /mnt/elasticsearch_2
    - /mnt/elasticsearch_3

cluster.name:

节点只能在与集群中的所有其他节点共享cluster.name时加入集群。默认名称是elasticsearch,但您应该将其更改为描述集群用途的适当名称。

cluster.name: logging-prod

node.name:

默认情况下,Elasticsearch将使用随机生成的UUID的前7个字符作为节点id。注意,节点id是持久化的,在节点重新启动时不会改变,因此默认节点名也不会改变。

配置一个更有意义的名称是值得的:

node.name: prod-data-2

network.host:

配置节点的ip地址:

network.host: 192.168.1.10

Discovery settings:

Elasticsearch使用名为“Zen discovery”的定制发现实现节点到节点的集群和主选择。在进行生产之前,应该配置两个重要的设置。

discovery.zen.ping.unicast.hosts
discovery.zen.minimum_master_nodes

第一个配置:

当需要在其他服务器上形成具有节点的群集时,您必须提供群集中可能是实时且可联系的其他节点的列表。这可以指定如下:

discovery.zen.ping.unicast.hosts:
   - 192.168.1.10:9300
   - 192.168.1.11 
   - seeds.mydomain.com 

第二个配置:

为防止数据丢失,必须配置 discovery.zen.minimum_master_nodes设置,以便每个符合主节点的节点都知道必须可见的最大主节点数,才能形成集群。

为了避免大脑分裂,这个设置应该设置为主节点的法定数量:

(master_eligible_nodes / 2) + 1

换句话说,如果有三个主节点,那么最小主节点应该设置为(3 / 2)+ 1或2:

discovery.zen.minimum_master_nodes: 2

Setting the heap size:

下面是如何通过在jvm.options文件堆大小的示例:

-Xms2g 
-Xmx2g 

还可以通过环境变量设置堆大小。通过ES_JAVA_OPTS设置这些值:

ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch 
ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch 

JVM heap dump path:

默认情况下,Elasticsearch将JVM配置为将内存异常转储到默认数据目录(这 /var/lib/elasticsearch适用于RPMDebian软件包发行版,以及data用于tar和zip归档文件分发的Elasticsearch安装根目录下的目录) 。如果这个路径是不适合接受heap dump您应该修改的条目-XX:HeapDumpPath=...在 jvm.options。如果指定目录,JVM将根据正在运行的实例的PID为heap dump生成文件名。如果指定固定文件名而不是目录,则当JVM需要在内存不足异常上执行heap dump时,该文件必须不存在,否则heap dump将失败。

GC日志,JVM致命错误:

查看官网。

重要的系统配置

理想情况下,Elasticsearch应该在服务器上单独运行并使用它可用的所有资源。为此,您需要配置操作系统以允许运行Elasticsearch的用户访问比默认情况下允许的资源更多的资源。

在投入生产之前,必须考虑以下设置:

禁止交换:

大多数操作系统都试图使用尽可能多的内存进行文件系统缓存,并急切地交换未使用的应用程序内存。这可能导致JVM堆的某些部分甚至可执行页面被交换到磁盘。

交换对于性能、节点稳定性都是非常糟糕的,应该不惜一切代价加以避免。它可能导致垃圾收集持续几分钟而不是几毫秒,还可能导致节点响应缓慢,甚至与集群断开连接。

1)在Linux系统上,您可以通过运行以下命令暂时禁用swap:

sudo swapoff -a

2)要永久禁用它,您需要编辑/etc/fstab文件,并注释掉任何包含单词swap的行。

3)Another option available on Linux systems is to ensure that the sysctl value vm.swappiness is set to 1.这减少了内核交换的趋势,在正常情况下不应该导致交换,同时仍然允许整个系统在紧急情况下交换。

4)另一种选择是在Linux/Unix系统上使用mlockall,或者在Windows上使用VirtualLock,尝试将进程地址空间锁定到RAM中,以防止交换任何Elasticsearch内存。这可以通过在config/elasticsearch.yml中添加这一行来完成文件:

bootstrap.memory_lock: true

文件描述符

Elasticsearch使用大量文件描述符或文件句柄。用完文件描述符可能是灾难性的,最有可能导致数据丢失。确保将运行Elasticsearch的用户的打开文件描述符数量限制增加到65,536或更高。

对于.zip和.tar.gz包,在启动Elasticsearch之前用root用户设置ulimit -n 65536,或设置nofile为65536在/etc/security/limit .conf。

虚拟内存

线程数

DNS缓存设置

都很简单官网https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config.html

其他配置参见官网。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_33872191/article/details/82751756