前言
最近心血来潮,准备学习下开源届首选的搜索引擎Elasticsearch
,在了解相关概念之后就准备在虚拟机装上试一试了。
下载安装包
在Elasticsearch 官网下载,下载完后解压至任意目录。
启动
1 | ./bin/elasticsearch |
然而并没有就这么容易启动就成功,下面一一排查启动故障。
排查启动故障
- 启动报 OOM 内存溢出
原因:elasticsearch 默认的 jvm 堆内存大小为 1GB,而我虚拟机分配的内存也才 1GB,启动时系统分配不了这么大的堆内存所以直接内存溢出了。
解决办法:把堆内存调小点,修改./config/jvm.options 文件,把堆内存设置为 512MB。1
2-Xms512m
-Xmx512m - 不能以 root 用户启动
原因:elasticsearch 为了安全性默认不允许 root 用户来启动。
解决办法:- 在启动参数中添加
-Des.insecure.allow.root=true
,但是我测试了根本没效果,原来是 elasticsearch5.x 版本把这个属性给去掉了,也就是说绝对禁止 root 用户运行了,这个是相关PR。 - 添加一个用户来运行
1
2
3
4
5
6
7
8#添加一个用户名为es
useradd es
#把elasticsearch目录的所属用户和组设置为es
chown -R es:es ./
#切换到es用户
su es
#运行
./bin/elasticsearch
- 在启动参数中添加
- max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
原因:elasticsearch 启动时检测到用户最大文件描述符限制低于 65536 而抛出的异常。
解决办法:修改 es 用户最大文件描述符限制在最后添加两行内容,设置 es 用户最大文件描述符限制为 655361
2
3
4#切换到root用户
su root
#修改对应文件
vi /etc/security/limits.conf1
2es soft nofile 65536
es hard nofile 65536 - max number of threads [3802] for user [es] is too low, increase to at least [4096]
原因:elasticsearch 启动时检测到用户最大的线程数限制低于 4096 而抛出的异常。
解决办法:修改 es 用户最大的线程数限可以看到 root 用户是无限制的,而代表的其他用户限制是 4096。(很奇怪既然是 4096 为什么上面提示说最大线程数是 3802 呢?*),先不管原因了搜到了解决方案在下面加一行。1
2
3
4#切换到root用户
su root
#修改对应文件
vi /etc/security/limits.d/20-nproc.conf1
* hard nproc 4096
- max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
原因:elasticsearch 启动时检测到系统最大虚拟内存低于 262144 而抛出的异常。
解决办法:修改系统最大虚拟内存修改或添加 vm.max_map_count 参数1
vi /etc/sysctl.conf
刷新配置1
vm.max_map_count=262144
1
sysctl -p
启动成功
启动成功之后访问http://127.0.0.1:9200
,就可以看到服务器相关信息了。
默认情况下是服务器是监听127.0.0.1
,如果让别的网段访问到的话需要修改./config/elasticsearch.yml
文件。
1 | #配置所有网段可以访问 |