Elasticsearch默认安装后设置的内存是1GB,对于任何一个业务部署来说,这个都太小了。如果你正在使用这些默认堆内存配置,你的集群配置可能有点问题。
一:简单处理方式
这里有两种方式修改Elasticsearch的堆内存(下面就说内存好了),最简单的一个方法就是指定ES_HEAP_SIZE环境变量。服务进程在启动时候会读取这个变量,并相应的设置堆的大小。举例,你可以用下面的命令设置它
[elastic@izwz99z5o9dc90keftqhlrz elasticsearch-5.3.5-node1]$ clear
[elastic@izwz99z5o9dc90keftqhlrz elasticsearch-5.3.5-node1]$ export ES_HEAP_SIZE=5000m
此外,你也可以通过命令行参数的形式,在程序启动的时候把内存大小传递给它:
./bin/elasticsearch -Xmx5000m -Xms5000m
其实用这个就可以了
[elastic@izwz99z5o9dc90keftqhlrz elasticsearch-5.3.5-node1]$ ./bin/elasticsearch -d
下面这个命令的参数数据并不生效
[elastic@izwz99z5o9dc90keftqhlrz elasticsearch-5.3.5-node1]$ ./bin/elasticsearch -Xmx5000m -Xms5000m -d
备注:确保Xmx和Xms的大小是相同的,防止程序在运行时改变大小,这个是很废的。
一般来说设置ES_HEAP_SIZE环境变量,比直接写-Xmx5000m -Xms5000m更好一点。
elastic 25330 3.2 22.6 3829836 425868 pts/1 Sl 20:39 0:21 /usr/local/jdk1.8.0_172/bin/java -Xms5000m -Xmx5000m -Xss256k -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Delasticsearch -Des.path.home=/home/elastic/elasticsearch-5.3.5-node1 -cp :/home/elastic/elasticsearch-5.3.5-node1/lib/elasticsearch-5.3.5.jar:/home/elastic/elasticsearch-5.3.5-node1/lib/*:/home/elastic/elasticsearch-5.3.5-node1/lib/sigar/* org.elasticsearch.bootstrap.Elasticsearch
elastic 28757 0.0 0.0 155332 1868 pts/1 R+ 20:50 0:00 ps aux
二:推荐处理方式 系统变量
推荐写入到全局的环境变量中:root
[root@iZ23evimvf8Z ~]# vi /etc/profile
加入这一句:
export ES_HEAP_SIZE=5g
保存,退出。然后以后的启动都将自动加载5g这个值。
三:推荐处理方式 ES启动变量
[root@iZbp1f0xuq9rc41s6gdvfyZ /]# cd /home/hn-1/elasticsearch-6.3.5-node1/bin
[root@iZbp1f0xuq9rc41s6gdvfyZ bin]# vi elasticsearch
# 加入这个就好了,有java的不用加了
JAVA_HOME=/usr/local/jdk1.8.0_172
ES_HEAP_SIZE=2000m