Elasticsearch关键配置点
系统参数
-
修改系统文件句柄数
sed -e '/^* soft nofile/d' \ -e '/^* hard nofile/d' \ -e '/^elasticsearch soft nofile/d' \ -e '/^elasticsearch hard nofile/d' \ -e '/^* soft memlock/d' \ -e '/^* hard memlock/d' \ -e '/^elasticsearch soft memlock/d' \ -e '/^elasticsearch hard memlock/d' \ -i.bak \ /etc/security/limits.conf sed -e '$a * soft nofile 655350' \ -e '$a * hard nofile 655350' \ -e '$a elasticsearch soft nofile 655350' \ -e '$a elasticsearch hard nofile 655350' \ -e '$a * soft memlock unlimited' \ -e '$a * hard memlock unlimited' \ -e '$a elasticsearch soft memlock unlimited' \ -e '$a elasticsearch hard memlock unlimited' \ -i.bak \ /etc/security/limits.conf;
系统要求
-
关闭swap,频繁的使用swap会大大降低性能
swapoff -a
-
ES在启动时默认不允许使用root账户,所以需要先创建ES自己的账户
useradd -m elasticsearch
内存配置
-
ES的最大/最小堆栈内存建议不超过31G,否则会因为指针压缩的原因,白白浪费内存资源,甚至可能出现数据存取更慢的情况。
-
如果服务器内存大小超过64G,可以考虑在一个服务器部署多个ES实例。
-
ES配置的内存是jvm的最大堆内存,并未涉及lucene的内存配置,而lucene在倒排索引时会进行缓存(占用大量内存),官方建议预留系统一般的内存给lucene,所以综合下来一个ES实例在不论内存资源多大的服务器上面,jvm配置最大为31G。
-
开启内存锁定的配置
sed -e '/^vm.max_map_count/d' -i.bak /etc/sysctl.conf sed -e '$a vm.max_map_count=655360' -i.bak /etc/sysctl.conf sysctl -p