Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 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 986513408 bytes for committing reserved memory.# An error report file with more information is saved as:# /usr/local/fast/elasticsearch-6.1.1/hs_err_pid1795.log
[2018-01-08T10:59:24,934][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.1.1.jar:6.1.1]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:85) ~[elasticsearch-6.1.1.jar:6.1.1]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:104) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:171) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:322) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:121) ~[elasticsearch-6.1.1.jar:6.1.1]
... 6 more
切换到elasticsearch用户,然后启动elasticserach,发现还是抛出"Unable to access 'path.data' "异常。
Caused by: java.lang.IllegalStateException: Unable to access 'path.data' (/usr/local/fast/elasticsearch-6.1.1/data)
at org.elasticsearch.bootstrap.FilePermissionUtils.addDirectoryPath(FilePermissionUtils.java:70) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Security.addFilePermissions(Security.java:287) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Security.createPermissions(Security.java:242) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Security.configure(Security.java:119) ~[elasticsearch-6.1.1.jar:6.1.1]
at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:207) ~[elasticsearch-6.1.1.jar:6.1.1]
1.[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536],修改/etc/security/limits.conf,添加如下内容,如果不成功的话可以尝试ulimit -n 65536。
2.[2]: max number of threads [794] for user [elasticsearch] is too low, increase to at least [4096]修改/etc/security/limits.d/20-nproc.conf,具体如下:
接着修改/etc/security/limits.conf,具体如下:
3.[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144],修改/etc/sysctl.conf文件,具体如下。修改完成后,输入sysctl -a 命令。
由于elasticsearch默认分配jvm空间大小为1g,我在这里修改jvm空间分配为512MB
修改config目录下的elasticsearch.yml配置文件,具体如下:
# Use a descriptive name for your cluster:#
cluster.name: es_cmazxiaoma
## ------------------------------------ Node ------------------------------------## Use a descriptive name for the node:#
node.name: node-1
## Set the bind address to a specific IP (IPv4 or IPv6):#
network.host: 192.168.12.6
## Set a custom port for HTTP:#
http.port: 9200
#