- 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吧!!!。
- [root@elk-node1 ~]# grep '^-Xm' /etc/elasticsearch/jvm.options
- # -Xms1g # 占用最小内存
- # -Xmx1g # 占用最大内存
- -Xms512m
- -Xmx512m
- # 本文Elasticsearch版本:6.2.4
2. 但是大家都知道凡是Java程序都是非常占用内存的,于是为了防止它内存不够用的时候占用swap分区,所以这里我们需要锁定内存,锁定内存实在Elasticseasch主配置文件中配置,配置打开如下:
- [root@elk-node1 ~]# cat /etc/elasticsearch/elasticsearch.yml
- ......
- ......
- # ----------------------------------- Memory -----------------------------------
- #
- # Lock the memory on startup:
- #
- bootstrap.memory_lock: true #将此行配置打开即可
- #
- # Make sure that the heap size is set to about half the memory available
- # on the system and that the owner of the process is allowed to use this
- # limit.
- #
- # Elasticsearch performs poorly when the system is swapping the memory.
- ......
- ......
3. 如果在配置好Elasticsearch之后,配置的是占用1g内存,那么启动时他就直接会占用1g内存(配多大直接占用多大)。但是elasticsearch配置文件中直接打开‘bootstrap.memory_lock: true’配置的话Elasticsearch是启动不起来的,因为自从5版本以上,有的参数没配置,这里我们需要在启动文件中配置一下,
- [root@elk-node1 ~]# vim /usr/lib/systemd/system/elasticsearch.service
- .......
- ......
- # Specifies the maximum file descriptor number that can be opened by this process
- LimitNOFILE=65536
- LimitMEMLOCK=infinity #配置该行参数,此配置意思是最大化的使用内存
- .......
- ......
- # 配置了‘LimitMEMLOCK=infinity’配置文件中锁定内存的配置才能打开,elasticsearch才能启动起来
4. 修改内存后可以通过查看进程查看内存是否修改。
- [root@elk-node1 ~]# ps -ef|grep java
- 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
2018年5月24日 下午4:29 沙发
嗯