Elasticsearch 内存锁定3 min read

  • A+
所属分类:ELKstack

  

内存配置官方文档说明:https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html

官网限制内存使用说明:https://www.elastic.co/guide/cn/elasticsearch/guide/current/_limiting_memory_usage.html

   

1. Elasticsearch 和 logstash 都是基于Java写的,所以它的配置里面有个jvm配置文件,默认是1g,但是我们生产环境中不可能只给它1个g,所以根据需求需要配置,我这里内存有限就改成512m吧!!!。

  1. [root@elk-node1 ~]# grep '^-Xm' /etc/elasticsearch/jvm.options   
  2. # -Xms1g       # 占用最小内存  
  3. # -Xmx1g       # 占用最大内存  
  4. -Xms512m  
  5. -Xmx512m  
  6. # 本文Elasticsearch版本:6.2.4  

  

2. 但是大家都知道凡是Java程序都是非常占用内存的,于是为了防止它内存不够用的时候占用swap分区,所以这里我们需要锁定内存,锁定内存实在Elasticseasch主配置文件中配置,配置打开如下:

  1. [root@elk-node1 ~]# cat /etc/elasticsearch/elasticsearch.yml  
  2. ......  
  3.    ......  
  4. # ----------------------------------- Memory -----------------------------------  
  5. #  
  6. # Lock the memory on startup:  
  7. #  
  8. bootstrap.memory_lock: true       #将此行配置打开即可  
  9. #  
  10. # Make sure that the heap size is set to about half the memory available  
  11. # on the system and that the owner of the process is allowed to use this  
  12. # limit.  
  13. #  
  14. # Elasticsearch performs poorly when the system is swapping the memory.  
  15. ......  
  16.    ......  

  

3. 如果在配置好Elasticsearch之后,配置的是占用1g内存,那么启动时他就直接会占用1g内存(配多大直接占用多大)。但是elasticsearch配置文件中直接打开‘bootstrap.memory_lock: true’配置的话Elasticsearch是启动不起来的,因为自从5版本以上,有的参数没配置,这里我们需要在启动文件中配置一下,

  1. [root@elk-node1 ~]# vim /usr/lib/systemd/system/elasticsearch.service             
  2. .......  
  3.    ......  
  4. # Specifies the maximum file descriptor number that can be opened by this process  
  5. LimitNOFILE=65536  
  6. LimitMEMLOCK=infinity    #配置该行参数,此配置意思是最大化的使用内存  
  7. .......  
  8.    ......  
  9.  # 配置了‘LimitMEMLOCK=infinity’配置文件中锁定内存的配置才能打开,elasticsearch才能启动起来  

  

4. 修改内存后可以通过查看进程查看内存是否修改。

  1. [root@elk-node1 ~]# ps -ef|grep java  
  2. elastic+   2364      1 49 23:00 ?        00:00:14 /bin/java -Xms512m -Xms512m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch.DvkqJUX4 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/lib/elasticsearch -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/var/log/elasticsearch/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -Des.path.home=/usr/share/elasticsearch -Des.path.conf=/etc/elasticsearch -cp /usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch -p /var/run/elasticsearch/elasticsearch.pid --quiet  

  

  

zhaoyulin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • 匿名 匿名 2

      :idea: