elasticsearch解决启动报错问题集
ps:别问我为什么知道这么多报错,我就是从安装到启动。。。一步一步按着下面报错顺序踩坑的,气死了。。。。希望能帮到入门的你
1 内存报错
报错信息:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2060255232 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /root/hs_err_pid8704.log
分析:
信息当中说了error=‘Cannot allocate memory’ ,证明服务器内存不足了。
由于elasticsearch5.0 默认分配 jvm 空间大小为2g,所以修改 jvm空间分配即可。
解决:
vim config/jvm.options
执行上面代码 修改相关参数,将2g修改为512m
-Xms2g --> -Xms512m
-Xmx2g --> -Xmx512m
2 用户报错 [root]
报错信息:
[WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException:
can not run elasticsearch as root
分析:
信息当中说了"can not run elasticsearch as root",看的出来是elasticsearch不允许用root角色去启动项目
解决:
- 创建elsearch用户组及elsearch用户:
groupadd elsearch
useradd elsearch -g elsearch
passwd elsearch
- 使用root角色更改elsearch文件夹的用户组和用户
先登录root角色然后执行下面命令
chown -R elsearch:elsearch elasticsearch-5.5.1
3. 切换到elsearch角色然后执行启动命令
su elsearch
./elasticsearch-5.5.1/bin/elasticsearch #启动命令
3 创建描述文件大小太低
报错信息:
[2021-02-02T16:09:02,753][INFO ][o.e.n.Node ] [YD8pyGI] starting ...
[2021-02-02T16:09:03,073][INFO ][o.e.t.TransportService ] [YD8pyGI] publish_address {172.16.174.76:9300}, bound_addresses {0.0.0.0:9300}
[2021-02-02T16:09:03,099][INFO ][o.e.b.BootstrapChecks ] [YD8pyGI] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
ERROR: [1] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2021-02-02T16:09:03,158][INFO ][o.e.n.Node ] [YD8pyGI] stopping ...
[2021-02-02T16:09:03,212][INFO ][o.e.n.Node ] [YD8pyGI] stopped
[2021-02-02T16:09:03,212][INFO ][o.e.n.Node ] [YD8pyGI] closing ...
[2021-02-02T16:09:03,227][INFO ][o.e.n.Node ] [YD8pyGI] closed
分析:
"max file descriptors [65535] forxxxxxx "这句就很好的描述了问题,就是文件大小不足,我们去修改相关的参数即可
解决:
使用root角色执行
vim /etc/security/limits.conf
两种解决方法,下图使用的第一种解决方法
1.添加刚刚新增的用户elsearch创建文件大小
elsearch soft nofile 65536
elsearch hard nofile 65536
2.修改后面 "*"对应的文件大小,*是通配符代表所有用户
* soft nofile 65536
* hard nofile 65536
修改完之后记得重启服务器,不然可能不生效
4 配置network.host: 0.0.0.0导致服务启动不成功
个人情况是走完上面的报错之后项目就能顺利启动了,但后面为了所有机器都能访问elsearch就配置了network.host: 0.0.0.0。然后就启动报错了
报错信息:
[2021-02-03T14:30:11,075][INFO ][o.e.t.TransportService ] [YD8pyGI] publish_address {172.16.174.76:9300}, bound_addresses {0.0.0.0:9300}
[2021-02-03T14:30:11,084][INFO ][o.e.b.BootstrapChecks ] [YD8pyGI] bound or publishing to a non-loopback or non-link-local address, enforcing bootstrap checks
ERROR: [1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low,
increase to at least [262144]
[2021-02-03T14:30:11,137][INFO ][o.e.n.Node ] [YD8pyGI] stopping ...
[2021-02-03T14:30:11,210][INFO ][o.e.n.Node ] [YD8pyGI] stopped
[2021-02-03T14:30:11,211][INFO ][o.e.n.Node ] [YD8pyGI] closing ...
[2021-02-03T14:30:11,221][INFO ][o.e.n.Node ] [YD8pyGI] closed
分析:
“max virtual memory areas vm.max_map_count [65530] is too low,” 这个报错也很明显了,和之前文件的一样设置成相应的数值即可
解决:
1.使用root角色执行
vim /etc/sysctl.conf
2.增加以下参数
vm.max_map_count=262144
3.重启服务器(记得重启,不然可能不生效)