ElasticSearch 常见错误

 

 

在一次使用虚拟机做实验的过程中启动elasticsearch遇到了这样的报错:


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:
# /usr/local/elasticsearch-5.6.0/bin/hs_err_pid2819.log

问题在于 ES 5.x版本  需要2G内存  -Xms2G -Xmx2G 

本地物理内存过小导致 

参考

http://blog.51cto.com/10950710/2124131

 

解决:

原因:
查看了 /usr/local/elasticsearch-5.6.0/bin/hs_err_pid1027.log日志文件,出现这样的报错,有两种可能:
1、系统进程数达到上限了,部署服务的时候/etc/security/limits.conf文件修改没有生效。
2、确实物理内存不够

解决:
通过命令查看系统限制:ulimit -a查看open files不够大,如果不够大,就尝试通过设大该值:

[root@docker ~]# ulimit -n
1024

果然是部属的时候修改的/etc/security/limits.conf文件没有生效。于是将机器reboot了一下,在查看就生效了:

[root@docker ~]# ulimit -n
65536

但是在启动的时候还是报同样的错,查看了一下内存,这个虚拟机的内存只有1G,那应该就是物理内存不够了。目前还剩下这么多:

[root@docker ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           974M        119M         79M        7.7M        775M        680M
Swap:          819M          0B        819M

手动清理了一下内存:

[root@docker ~]# echo 3 > /proc/sys/vm/drop_caches  
[root@docker ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           974M        114M        789M        7.7M         69M        739M
Swap:          819M          0B        819M
[root@docker ~]# 

但是在启动报错依旧。
于是增加物理内存到2G:

[root@docker elk]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        1.6G         77M          4K         72M         29M
Swap:          819M        691M        128M

然后切换到elk用户去启动服务,就OK了:

[elk@docker bin]$ ./elasticsearch     #为了看启动日志就前台启动的,ctrl+c 进程就会over掉

检查端口,起来了

[root@docker elk]# netstat -tlunp|grep 9200
tcp6       0      0 10.0.0.16:9200          :::*                    LISTEN      9628/java           
[root@docker elk]# 

然后关掉进程重新后台启动:

[elk@docker bin]$ nohup ./elasticsearch >/dev/null 2>&1 &     #后台启动
[2] 9808
[elk@docker bin]$ ps -ef|grep elasticsearch   #检查进程
elk        9808   4115 10 01:29 pts/0    00:00:23 /usr/local/jdk1.8.0_151/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -Djdk.io.permissionsUseCanonicalPath=true -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Dlog4j.skipJansi=true -XX:+HeapDumpOnOutOfMemoryError -Des.path.home=/usr/local/elasticsearch-5.6.0 -cp /usr/local/elasticsearch-5.6.0/lib/* org.elasticsearch.bootstrap.Elasticsearch
elk        9890   4115  0 01:32 pts/0    00:00:00 grep --color=auto elasticsearch
[elk@docker bin]$ 
[root@docker elk]# netstat -tlunp|grep 9200    #用root用户检查端口
tcp6       0      0 10.0.0.16:9200          :::*                    LISTEN      9808/java           
[root@docker elk]# 
posted @ 2019-01-10 22:06  zsls-lang  阅读(1078)  评论(0编辑  收藏  举报