设为首页 收藏本站
查看: 890|回复: 0

[经验分享] Elasticsearch的配置(1)

[复制链接]

尚未签到

发表于 2019-1-29 06:28:28 | 显示全部楼层 |阅读模式
配置Elasticsearch
  Elasticsearch提供良好的默认设置,只需要很少的配置。使用群集更新设置 API,可以在运行的群集上更改大多数设置 。
  https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-update-settings.html
  配置文件应包含特定于节点的设置(例如node.name和路径),或节点为了能够加入集群而需要的设置,例如cluster.name和network.host。
1. 配置文件位置
  Elasticsearch有三个配置文件:

  •   elasticsearch.yml 用于配置Elasticsearch
  •   jvm.options 用于配置Elasticsearch JVM设置
  •   log4j2.properties 用于配置Elasticsearch日志记录
  这些文件位于config目录中,其默认位置取决于安装来自归档分发(tar.gz或 zip)还是软件包分发(Debian或RPM软件包)。
  对于档案分发,config目录位置默认为 $ES_HOME/config。config目录的位置可以通过ES_PATH_CONF环境变量进行更改 ,如下所示:
ES_PATH_CONF=/path/to/my/config ./bin/elasticsearch1  或者,您可以通过命令行或通过shell配置文件来export访问ES_PATH_CONF环境变量。
  对于包发行版,config目录位置默认为 /etc/elasticsearch。config目录的位置也可以通过ES_PATH_CONF环境变量来改变,但是请注意,在你的shell中设置是不够的。相反,这个变量来源于 /etc/default/elasticsearch(对于Debian软件包)和 /etc/sysconfig/elasticsearch(对于RPM软件包)。您将需要相应地编辑ES_PATH_CONF=/etc/elasticsearch其中一个文件中的 条目以更改config目录位置。
2.elasticsearch.yml 配置
2.1 配置文件格式
  配置格式是YAML。以下是更改数据和日志目录路径的示例:
path:    data: /var/lib/elasticsearch  
    logs: /var/log/elasticsearch123
  设置也可以如下展开:
path.data: /var/lib/elasticsearchpath.logs: /var/log/elasticsearch122.2 环境变量替换
  使用${…}配置文件中的符号引用的环境变量将被替换为环境变量的值,例如:
node.name:    ${HOSTNAME}network.host: ${ES_NETWORK_HOST}122.3 提示设置
  对于不希望存储在配置文件中的设置,可以使用该值prompt.text或prompt.text或{prompt.secret}在前台启动Elasticsearch。prompt.secret已禁用回声,以便输入的值不会显示在您的终端中;prompt.secret已禁用回声,以便输入的值不会显示在您的终端中;{prompt.text}将允许您在输入时看到该值。例如:
node:  
  name: ${prompt.text}12
  启动Elasticsearch时,系统会提示您输入实际值,如下所示:
Enter value for [node.name]:1  注意
  如果 在设置中使用prompt.text或者prompt.text或者{prompt.secret}在设置中使用Elasticsearch,那么Elasticsearch将不会启动,并且该过程作为服务运行或在后台运行。
2.4 我的配置

  •   1.$ELASTICSEARCH_HOME/config/elasticsearch.yml
************以下是固定的写法************bootstrap.memory_lock: true  
bootstrap.system_call_filter: false
  
network.host: 0.0.0.0
  
http.cors.enabled: true
  
http.cors.allow-origin: "*"************以下是动态的写法************cluster.name: (集群的名称)
  
path.data:(数据目录,多个目录可用”,”号隔开)
  
path.logs:(日志目录)
  
......123456789101112
  $ELASTICSEARCH_HOME/config/discovery-file/unicast_hosts.txt
  在此文件中添加elasticsearch集群的master节点的地址:端口
[root@biluos config]# su es[es@biluos config]$ ll  
total 16-rw-rw---- 1 es es 2853 Feb  2 01:28 elasticsearch.yml
  
-rw-rw---- 1 es es 2767 Feb  9 14:05 jvm.options
  
-rw-rw---- 1 es es 5091 Feb  2 01:28 log4j2.properties
  
[es@biluos config]$ mkdir discovery-file
  
[es@biluos config]$ cd
  
discovery-file/    elasticsearch.yml  jvm.options        log4j2.properties
  
[es@biluos config]$ cd discovery-file/
  
[es@biluos discovery-file]$ hostname
  
biluos.com
  
[es@biluos discovery-file]$ vim unicast_hosts.txt
  
biluos.com:9300123456789101112131415
设置JVM选项
  您应该很少需要更改Java虚拟机(JVM)选项。如果这样做,最可能的变化是设置堆大小。本文档的其余部分详细介绍了如何设置JVM选项。
  设置JVM选项(包括系统属性和JVM标志)的首选方法是通过jvm.options配置文件。这个文件的默认位置是config/jvm.options(从tar或zip发行版/etc/elasticsearch/jvm.options进行安装时)和(从Debian或RPM软件包进行安装时)。
  这个文件包含一个特殊语法的JVM参数的行分隔列表:

  •   仅包含空格的行被忽略
  •   以开头的行#被视为注释并被忽略
# this is a comment1

  •   以a开头的行-被视为独立于JVM版本的JVM选项
-Xmx2g1

  •   以数字开头,:后面跟随a的行-被视为JVM选项,仅当JVM的版本与数字匹配
8:-Xmx2g1

  •   以数字开头,-后面跟随a的行:被视为JVM选项,仅当JVM的版本大于或等于数字
8-:-Xmx2g1

  •   以数字开头的行后面-跟随数字后面的行:被视为JVM选项,仅当JVM的版本落在两个数字的范围内
8-9:-Xmx2g1

  •   所有其他线路被拒绝
  您可以将自定义JVM标志添加到此文件,并将此配置检入到您的版本控制系统中。
  设置Java虚拟机选项的另一种机制是通过 ES_JAVA_OPTS环境变量。例如:
export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djava.io.tmpdir=/path/to/temp/dir"./bin/elasticsearch12  使用RPM或Debian软件包时,ES_JAVA_OPTS可以在系统配置文件中指定 。
  JVM具有用于观察JAVA_TOOL_OPTIONS 环境变量的内置机制。我们在包装脚本中故意忽略这个环境变量。这样做的主要原因是在某些操作系统上(例如Ubuntu),通过这个环境变量默认安装了代理,我们不想干涉Elasticsearch。
  此外,其他一些Java程序支持JAVA_OPTS环境变量。这不是 JVM中构建的机制,而是生态系统中的一种约定。但是,我们不支持这个环境变量,而是支持通过上面的jvm.options文件或环境变量来设置JVM选项ES_JAVA_OPTS。
我的配置:

  •   修改配置文件$ELASTICSEARCH_HOME/config/jvm.options
      设置JVM的最小内存,最大内存如下:
[root@biluos ~]# vim  /home/es/elasticsearch/elasticsearch-6.2.0/config/jvm.options  

  
-Xms2g-Xmx2g1234
建议:

  •   把你的内存的一半给Lucene
      一个常见的问题是配置一个大内存,假设你有一个64G内存的机器,我的天,你想把64G内存给Elasticsearch吗? 越大越好!
      当然,内存对于Elasticsearch来说绝对是重要的,用于更多的内存数据提供更快的操作。而且还有一个内存消耗大户-Lucene
      Lucene的设计目的是把底层OS里的数据缓存到内存中。Lucene的段是分别存储到单个文件中的,这些文件都是不会变化的,所以很利于缓存,同时操作系统也会把这些段文件缓存起来,以便更快的访问。
      Lucene的性能取决于和OS的交互,如果你把所有的内存都分配给Elasticsearch,不留一点给Lucene,那你的全文检索性能会很差的。
      最后标准的建议是把50%的内存给elasticsearch,剩下的50%也不会没有用处的,Lucene会很快吞噬剩下的这部分内存。
  •   不要超过32G
      这里有另外一个原因不分配大内存给Elasticsearch,事实上jvm在内存小于32G的时候会采用一个内存对象指针压缩技术。
      在java中,所有的对象都分配在堆上,然后有一个指针引用它。指向这些对象的指针大小通常是CPU的字长的大小,不是32bit就是64bit,这取决于你的处理器,指针指向了你的值的精确位置。
      对于32位系统,你的内存最大可使用4G。对于64系统可以使用更大的内存。但是64位的指针意味着更大的浪费,因为你的指针本身大了。浪费内存不算,更糟糕的是,更大的指针在主内存和缓存器(例如LLC, L1等)之间移动数据的时候,会占用更多的带宽。
      java 使用一个叫内存指针压缩的技术来解决这个问题。它的指针不再表示对象在内存中的精确位置,而是表示偏移量。这意味着32位的指针可以引用40亿个对象,而不是40亿个字节。最终,也就是说堆内存长到32G的物理内存,也可以用32bit的指针表示。
      一旦你越过那个神奇的30-32G的边界,指针就会切回普通对象的指针,每个对象的指针都变长了,就会使用更多的CPU内存带宽,也就是说你实际上失去了更多的内存。事实上当内存到达40-50GB的时候,有效内存才相当于使用内存对象指针压缩技术时候的32G内存。
      这段描述的意思就是说:即便你有足够的内存,也尽量不要超过32G,因为它浪费了内存,降低了CPU的性能,还要让GC应对大内存。
  •   我有一个1TB内存的机器
      这个32GB的线是很很重要的,那如果你的机器有很大的内存怎么办呢?现在的机器内存普遍增长,你现在都可以看到有300-500GB内存的机器。
      首先,我们建议编码使用这样的大型机
      其次,如果你已经有了这样的机器,你有两个可选项:
  •   你主要做全文检索吗?考虑给Elasticsearch 32G内存,剩下的交给Lucene用作操作系统的文件系统缓存,所有的segment都缓存起来,会加快全文检索。
  •   你需要更多的排序和聚合?你希望更大的堆内存。你可以考虑一台机器上创建两个或者更多ES节点,而不要部署一个使用32+GB内存的节点。仍然要坚持50%原则,假设
      你有个机器有128G内存,你可以创建两个node,使用32G内存。也就是说64G内存给ES的堆内存,剩下的64G给Lucene。
  如果你选择第二种,你需要配置cluster.routing.allocation.same_shard.host:true。这会防止同一个shard的主副本存在同一个物理机上(因为如果存在一个机器上,副本的高可用性就没有了)。
安全设置
  有些设置是敏感的,依靠文件系统权限来保护它们的值是不够的。对于这个用例,Elasticsearch提供了一个密钥库和一个elasticsearch-keystore工具来管理密钥库中的设置。
  注意
  这里的所有命令都应该以运行Elasticsearch的用户身份运行。
  注意
  只有一些设置被设计为从密钥库中读取。请参阅每个设置的文档,以查看它是否作为密钥库的一部分受支持。
  注意
  所有对密钥库的修改只有在重新启动Elasticsearch之后才会生效。
  注意
  elasticsearch keystore目前只提供混淆。将来,密码保护将被添加。
创建密钥库
  要创建elasticsearch.keystore,使用create命令:
bin/elasticsearch-keystore create1  该文件elasticsearch.keystore将被创建elasticsearch.yml。
列出密钥库中的设置
  以下list命令可以使用密钥库中的设置列表:
bin/elasticsearch-keystore list1添加字符串设置
  可以使用以下add命令添加敏感字符串设置,例如云插件的身份验证凭据:
bin/elasticsearch-keystore add the.setting.name.to.set1  该工具将提示输入设置的值。要通过stdin传递值,请使用–stdin标志:
cat /file/containing/setting/value | bin/elasticsearch-keystore add --stdin the.setting.name.to.set1删除设置
  要从密钥库中删除设置,请使用以下remove命令:
bin/elasticsearch-keystore remove the.setting.name.to.remove1Logging日志配置
  Elasticsearch使用Log4j 2进行日志记录。Log4j 2可以使用log4j2.properties文件进行配置。Elasticsearch公开三个属性

  •   ${sys:es.logs.base_path}
  •   ${sys:es.logs.cluster_name}
  •   ${sys:es.logs.node_name}
  (如果节点名称是通过明确设置node.name),可以在配置文件中引用,以确定日志文件的位置。该属性

  •   ${sys:es.logs.base_path}将解析为日志目录,
  •   ${sys:es.logs.cluster_name}将解析为群集名称(在默认配置中用作日志文件名的前缀)
  •   ${sys:es.logs.node_name}解析为节点名称(如果节点名称已明确设置)。
  例如,如果你的日志目录(path.logs)是/var/log/elasticsearch和您的群集名为production然后${sys:es.logs.base_path}将解析/var/log/elasticsearch和 ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log 将解析/var/log/elasticsearch/production.log。
# 配置RollingFileappenderappender.rolling.type = RollingFile  
appender.rolling.name = rolling# 日志名称 /var/log/elasticsearch/production.logappender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log appender.rolling.layout.type = PatternLayout
  
appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%.-10000m%n# 滚动日志到/var/log/elasticsearch/production-yyyy-MM-dd-i.log; 日志将被压缩在每个滚动,i并将增加appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.log.gz appender.rolling.policies.type = Policies# 使用基于时间的滚动策略appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
  
# 每天滚动日志appender.rolling.policies.time.interval = 1 # 在日边界上对齐滚动(而不是每24小时滚动一次)appender.rolling.policies.time.modulate = true
  
# 使用基于文件大小的滚动策略,比如文件到了100Mappender.rolling.policies.size.type = SizeBasedTriggeringPolicy
  
# 文件大小在256 MB之后滚动日志appender.rolling.policies.size.size = 256MB
  
appender.rolling.strategy.type = DefaultRolloverStrategy
  
appender.rolling.strategy.fileIndex = nomax# 滚动日志时使用删除操作appender.rolling.strategy.action.type = Delete
  
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}# 只删除匹配文件模式的日志appender.rolling.strategy.action.condition.type = IfFileName
  
# 模式是只删除主日志appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
  
# 只有当我们累积了太多的压缩日志时才删除appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize
  
# 压缩日志上的大小条件是2 GBappender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB 123456789101112131415161718192021222324252627282930313233
  注意
  Log4j的配置分析会被任何无关的空白混淆; 如果您在本页面上复制并粘贴任何Log4j设置,或者一般输入任何Log4j配置,请务必修剪任何前导和尾随空格。
  注意,除了可以更换.gz用.zip在appender.rolling.filePattern压缩使用zip格式轧制日志。如果删除.gz 扩展名,那么日志将不会在滚动时被压缩。
  如果要在指定的时间段内保留日志文件,则可以使用带有删除操作的滚动策略。
# 配置 DefaultRolloverStrategyappender.rolling.strategy.type = DefaultRolloverStrategy  
# 配置Delete处理滚动的动作appender.rolling.strategy.action.type = Delete
  
# Elasticsearch日志的基本路径appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
  
# 处理滚动时应用的条件appender.rolling.strategy.action.condition.type = IfFileName
  
# 从与glob匹配的基本路径中删除文件 ${sys:es.logs.cluster_name}-*; 这是日志文件滚动到的glob; 只需要删除滚动的Elasticsearch日志,而不是删除弃用和慢日志appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
  
# 嵌套的条件适用于与glob匹配的文件appender.rolling.strategy.action.condition.nested_condition.type = IfLastModified
  
# 保留七天的日志appender.rolling.strategy.action.condition.nested_condition.age = 7D 1234567891011121314
  只要命名log4j2.properties并且将Elasticsearch配置目录作为祖先,就可以加载多个配置文件(在这种情况下,它们将被合并)。这对于公开额外记录器的插件是有用的。记录器部分包含java包及其相应的日志级别。appender部分包含日志的目的地。有关如何自定义日志记录以及所有支持的appender的详细信息可以在Log4j文档中找到 。
配置日志级别=
  有四种方法来配置日志记录级别,每种方式都适合使用。
  通过命令行-E =(例如 -E logger.org.elasticsearch.transport=trace)。当您临时调试单个节点上的问题(例如,启动问题或开发期间)时,这是最合适的。
  通过elasticsearch.yml:( : 例如 logger.org.elasticsearch.transport: trace)。当你暂时调试一个问题,但不是通过命令行(例如,通过服务)启动Elasticsearch,或者你想要一个更持久的基础上调整日志级别时,这是最合适的。
  通过集群设置:
PUT /_cluster/settings  
{  "transient": {    "": ""
  
  }
  
}123456
  例如:
PUT /_cluster/settings  
{  "transient": {    "logger.org.elasticsearch.transport": "trace"
  
  }
  
}1234567
  在控制台中复制为CURL 视图
  当您需要动态调整正在运行的群集上的日志记录级别时,这是最合适的。
  通过log4j2.properties:
logger..name = logger..level = 12  例如:
logger.transport.name = org.elasticsearch.transportlogger.transport.level = trace12  当您需要对记录器进行细粒度的控制时(例如,要将记录器发送到另一个文件或以不同的方式管理记录器,这是非常罕见的用例)。
弃用日志
  除了常规日志记录外,Elasticsearch还允许您启用已弃用操作的日志记录。例如,如果您将来需要迁移某些功能,则可以提前确定。默认情况下,弃用日志记录在WARN级别处启用,在此级别上将放弃所有弃用日志消息。
logger.deprecation.level = warn1  这将在日志目录中创建一个每日滚动弃用日志文件。定期检查此文件,特别是当您打算升级到新的主要版本时。
  默认日志记录配置已将弃用日志的滚动策略设置为在1 GB之后进行滚动和压缩,并最多保留五个日志文件(四个滚动日志和活动日志)。
  您可以config/log4j2.properties通过将弃用日志级别设置为,在文件中禁用它error。
重要的Elasticsearch配置编辑
  虽然Elasticsearch只需要很少的配置,但在投入生产之前还需要考虑许多设置。
  在投入生产之前,必须考虑以下设置:

  •   路径设置
  •   集群名称
  •   节点名称
  •   网络主机
  •   发现设置 Discovery settings

  •   堆大小 Heap>
  •   堆转储路径 Heap dump path
  •   GC日志记录
path.data并path.logs
  如果您正在使用.zip或.tar.gz存档,data和logs 目录是的子文件夹$ES_HOME。如果这些重要文件夹保留在其默认位置,则在将Elasticsearch升级到新版本时,这些文件夹被删除的风险很高。
  在生产使用中,几乎可以肯定地要更改数据和日志文件夹的位置:
path:  
  logs: /var/log/elasticsearch
  
  data: /var/data/elasticsearch123
  该RPM和Debian发行版已经使用自定义路径,data和logs。
  该path.data设置可以被设置为多条路径,在这种情况下,所有的路径将被用于存储数据(虽然属于单个碎片文件将全部存储相同的数据路径上):
path:  
  data:
  
    - /mnt/elasticsearch_1    - /mnt/elasticsearch_2    - /mnt/elasticsearch_312345
cluster.name
  节点只能cluster.name在与群集中的所有其他节点共享群集时才能加入群集。默认名称是elasticsearch,但您应将其更改为描述集群用途的适当名称。
cluster.name:logging-prod1  确保不要在不同的环境中重复使用相同的群集名称,否则可能会导致节点加入错误的群集。
node.name
  默认情况下,Elasticsearch将使用随机生成的UUID的前七个字符作为节点id。注意节点id是持久的,并且在节点重新启动时不会改变,因此默认节点名称也不会改变。
  值得配置一个更有意义的名字,这个名字在重启节点后也会有持久的优势:
node.name: prod-data-21  该node.name如下,也可以设置为服务器的主机名:
node.name: ${HOSTNAME}1network.host
  默认情况下,Elasticsearch只绑定到回送地址 - 例如127.0.0.1 和[::1]。这足以在服务器上运行单个开发节点。
  TIP
  实际上,多个节点可以从一个节点上的相同$ES_HOME 位置启动。这可以用于测试Elasticsearch形成群集的能力,但它不是推荐用于生产的配置。
  为了与其他服务器上的节点进行通信并形成群集,您的节点将需要绑定到非环回地址。虽然有很多 网络设置,通常你需要配置的是 network.host:
network.host: 192.168.1.101  该network.host设置也了解一些特殊的值,比如 localsiteglobal和喜欢修饰:ip4和:ip6,其中的细节中可以找到的特殊值network.host编辑。
  重要
  只要您提供自定义设置network.host,Elasticsearch就会假定您正在从开发模式转换到生产模式,并将多个系统启动检查从警告升级到异常。请参阅开发模式与生产模式编辑以获取更多信息。
发现设置 Discovery settingsedit
  Elasticsearch使用称为“Zen Discovery”的自定义发现实现进行节点到节点的群集和主选举。在投入生产之前,应该配置两个重要的发现设置。
discovery.zen.ping.unicast.hostsedit12  开箱即用,没有任何网络配置,Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305,尝试连接到运行在同一台服务器上的其他节点。这提供了自动集群体验,而无需进行任何配置。
  当需要与其他服务器上的节点组成群集时,您必须提供群集中其他节点的种子列表,这些节点可能是活的和可联系的。这可以指定如下:
discovery.zen.ping.unicast.hosts:  
- 192.168.1.10:9300 - 192.168.1.11  - seeds.mydomain.com 1234

  •   192.168.1.11 :如果未指定 ,端口将默认为transport.profiles.default.port并回退 transport.tcp.port。
  •   seeds.mydomain.com :解析为多个IP地址的主机名将尝试所有解析的地址。
discovery.zen.minimum_master_nodesedit1  为防止数据丢失,配置该discovery.zen.minimum_master_nodes设置至关重要, 以便每个符合主节点的节点都知道为了形成群集而必须可见的主节点的最小数量。
  如果没有这个设置,那么遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失。在编辑时避免分裂大脑minimum_master_nodes提供了更详细的解释 。
  为了避免脑裂,应将此设置设置为符合主节点的法定人数:
(master_eligible_nodes / 2) + 11  换句话说,如果有三个主要节点,则最小主节点应设置为(3 / 2) + 1或2:
discovery.zen.minimum_master_nodes: 21设置堆大小
  默认情况下,Elasticsearch通知JVM使用最小和最大大小为1 GB的堆。在转移到生产环境时,配置堆大小以确保Elasticsearch有足够的可用堆是非常重要的。
  Elasticsearch将通过(最小堆大小)和(最大堆大小)设置来分配jvm.options中指定的整个堆 。XmsXmx
  这些设置的值取决于服务器上可用的RAM数量。好的经验法则是:

  •   将最小堆大小(Xms)和最大堆大小(Xmx)设置为彼此相等。
  •   Elasticsearch可用的堆越多,可用于缓存的内存就越多。但是请注意,太多的堆可能会使您长时间垃圾收集暂停。
  •   设置Xmx为不超过物理内存的50%,以确保有足够的物理内存留给内核文件系统缓存。
  •   不要设置Xmx在JVM用于压缩对象指针(压缩oops)的临界点之上; 确切截止时间不等,但接近32GB。您可以通过在日志中查找一行来验证您是否在限制之下,如下所示:
heap size [1.9gb], compressed ordinary object pointers [true]堆大小[1.9gb],压缩的普通对象指针[true]12

  •   更好的是,尽量保持低于零压缩oops的阈值; 确切截止值有所不同,但大多数系统上的安全性为26 GB,但在某些系统上可能高达30 GB。您可以通过使用JVM选项启动XX:+UnlockDiagnosticVMOptions -XX:+PrintCompressedOopsMode并查找以下行来验证您是否处于限制之下:
heap address: 0x000000011be00000, size: 27648 MB, zero based Compressed Oops  
堆地址:0x000000011be00000,大小:27648 MB,基于零的压缩Oops12
  显示基于零的压缩oops被启用而不是
heap address: 0x0000000118400000, size: 28672 MB, Compressed Oops with base: 0x00000001183ff000堆地址:0x0000000118400000,大小:28672 MB,压缩Oops与基地:0x00000001183ff00012  以下是如何通过jvm.options文件设置堆大小的示例:
-Xms2g -Xmx2g 12  -Xms2g:将最小堆大小设置为2g。
  -Xmx2g :将最大堆大小设置为2g。
  也可以通过环境变量设置堆大小。这可以通过注释掉来完成Xms,并Xmx设置在 jvm.options文件中,并通过设置这些值ES_JAVA_OPTS:
ES_JAVA_OPTS="-Xms2g -Xmx2g" ./bin/elasticsearch ES_JAVA_OPTS="-Xms4000m -Xmx4000m" ./bin/elasticsearch 12  1.将最小和最大堆大小设置为2 GB。
  2.将最小和最大堆大小设置为4000 MB。
  注意
  为Windows服务配置堆是不同于上述。最初为Windows服务填充的值可以像上面那样配置,但在安装服务之后会有所不同。请参阅Windows服务文档以获取更多详细信息。
  https://www.elastic.co/guide/en/elasticsearch/reference/current/zip-windows.html#windows-service
  https://www.elastic.co/guide/en/elasticsearch/reference/current/zip-windows.html#windows-service
JVM堆转储路径JVM heap dump pathedit
  该RPM和Debian的软件包分发默认配置JVM倾倒在内存不足异常给堆 /var/lib/elasticsearch。如果该路径不适合用于存储堆转储,则应修改条目-XX:HeapDumpPath=/var/lib/elasticsearch中 jvm.options到备用路径。如果你指定一个文件名而不是一个目录,JVM将重复使用同一个文件; 这是防止堆转储堆积在堆转储路径中的一种机制。或者,您可以通过操作系统配置计划任务,以删除比配置的时间早的堆转储。
  请注意,归档分发默认情况下不配置堆转储路径。相反,JVM将默认转储到Elasticsearch进程的工作目录。如果你想配置一个堆转储路径,您应该修改条目#-XX:HeapDumpPath=/heap/dump/path中 jvm.options删除注释标记#,并指定一个实际的路径。
GC loggingedit GC日志编辑
  默认情况下,Elasticsearch启用GC日志。这些jvm.options在Elasticsearch日志中默认配置 为默认位置。默认配置每64 MB旋转日志,最多可以使用2 GB的磁盘空间。
  本文出自https://blog.csdn.net/qq_21383435/article/details/79295329
  参考ElasticSearch研究日记4.es配置
  https://www.jianshu.com/p/515a8f0d1268



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668853-1-1.html 上篇帖子: ElasticSearch教程(二)——ElasticSearch基本插件head 下篇帖子: elasticsearch集群部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表