1. Elasticsearch 配置
ES 的默认配置文件为 config/elasticsearch.yml
基本配置说明如下:
1 | cluster.name: elasticsearch |
2. Elasticsearch FAQ
2.1. elasticsearch 不允许以 root 权限来运行
问题:在 Linux 环境中,elasticsearch 不允许以 root 权限来运行。
如果以 root 身份运行 elasticsearch,会提示这样的错误:
1 | can not run elasticsearch as root |
解决方法:使用非 root 权限账号运行 elasticsearch
1 | # 创建用户组 |
2.2. vm.max_map_count 不低于 262144
问题:vm.max_map_count
表示虚拟内存大小,它是一个内核参数。elasticsearch 默认要求 vm.max_map_count
不低于 262144。
1 | max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] |
解决方法:
你可以执行以下命令,设置 vm.max_map_count
,但是重启后又会恢复为原值。
1 | sysctl -w vm.max_map_count=262144 |
持久性的做法是在 /etc/sysctl.conf
文件中修改 vm.max_map_count
参数:
1 | echo "vm.max_map_count=262144" > /etc/sysctl.conf |
注意
如果运行环境为 docker 容器,可能会限制执行 sysctl 来修改内核参数。
这种情况下,你只能选择直接修改宿主机上的参数了。
2.3. nofile 不低于 65536
问题: nofile
表示进程允许打开的最大文件数。elasticsearch 进程要求可以打开的最大文件数不低于 65536。
1 | max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536] |
解决方法:
在 /etc/security/limits.conf
文件中修改 nofile
参数:
1 | echo "* soft nofile 65536" > /etc/security/limits.conf |
2.4. nproc 不低于 2048
问题: nproc
表示最大线程数。elasticsearch 要求最大线程数不低于 2048。
1 | max number of threads [1024] for user [user] is too low, increase to at least [2048] |
解决方法:
在 /etc/security/limits.conf
文件中修改 nproc
参数:
1 | echo "* soft nproc 2048" > /etc/security/limits.conf |