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這個值。