docker安装es报错:
问题描述
[0.001s][error][logging] Error opening log file ‘logs/gc.log’:
Permission denied [0.001s][error][logging] Initialization of output
‘file=logs/gc.log’ using options ‘filecount=32,filesize=64m’ failed.
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was
deprecated in version 9.0 and will likely be removed in a future
release. Invalid -Xlog option
‘-Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m’,
see error log for details. Error: Could not create the Java Virtual
Machine.
解决方案:
是因为挂载权限的目录问题
1、修改挂载目录的所有者为es
chown -R es:es /data/es/
2、将文件的权限修改为777
chmod -R 777 /data/es/
问题描述
“java.lang.OutOfMemoryError: Java heap space Dumping heap to
data/java_pid1.hprof … Unable to create data/java_pid1.hprof: File
exists
解决办法
这个错误通常是因为JVM(Java虚拟机)分配的堆内存不足,导致无法为新的对象分配内存空间。
JVM的堆内存大小可以通过启动参数-Xms和-Xmx来设置。-Xms用于设置JVM启动时分配的堆内存大小,-Xmx用于设置JVM可以使用的最大堆内存大小。
docker run -d --name es-container -e ES_JAVA_OPTS="-Xms4g -Xmx4g" docker.elastic.co/elasticsearch/elasticsearch:7.15.2
在这个命令中,ES_JAVA_OPTS环境变量用于设置JVM的参数,-Xms4g -Xmx4g将堆内存大小设置为4GB。
问题描述
“ERROR: [1] bootstrap checks failed [1]: max virtual memory areas
vm.max_map_count [65530] is too low, increase to at least [262144]”
错误提示表明Elasticsearch在启动时遇到了一个问题,具体来说是vm.max_map_count的值太低。
解决办法
Elasticsearch在启动时会进行一些检查以确保系统的配置满足其运行要求。其中之一就是检查系统的最大虚拟内存区域数量(vm.max_map_count)。这个值在Linux系统中用于限制进程可以拥有的内存映射数量。Elasticsearch需要一个较高的值,因为它是用大量的内存映射来提高性能的。
要解决这个问题,你需要增加vm.max_map_count的值。你可以通过以下命令来临时地(重启后失效)修改这个
sudo sysctl -w vm.max_map_count=262144
如果你想让这个修改在重启后仍然生效,你需要将这个值添加到你的sysctl配置文件中。
vim /etc/sysctl.conf
# 新增或修改如下内容
vm.max_map_count=262144 # 大于等于262144
# 生效 sysctl
$ sysctl -p