docker启动elasticsearch时内存不足问题及解决方法

问题

docker安装并启动elasticsearch时内存不足

系统centos8(阿里云ecs服务器)

[root@iZ2zeczvvb79boy368xppwZ ~]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)

安装过程

docker pull elasticsearch:6.4.0

修改虚拟机内存(貌似没有效果)

sysctl -w vm.max_map_count=262144

使用docker run命令跑容器

docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:6.4.0

docker ps查看容器并没有启动

[root@iZ2zeczvvb79boy368xppwZ ~]# docker ps
CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS                              NAMES
edfc400862eb  rabbitmq:3.7.15  "docker-entrypoint.s…" 14 hours ago  Up 14 hours   0.0.0.0:4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp rabbitmq
2ae2f3f8dc1f  nginx:1.10   "nginx -g 'daemon of…" 2 weeks ago   Up 2 weeks   0.0.0.0:80->80/tcp, 443/tcp                        nginx
164e4e7561df  redis:3.2   "docker-entrypoint.s…" 2 weeks ago   Up 2 weeks   0.0.0.0:6379->6379/tcp                          redis
eeabe57f1f21  mysql:5.7   "docker-entrypoint.s…" 2 weeks ago   Up 2 weeks   0.0.0.0:3306->3306/tcp, 33060/tcp                       mysql

docker ps -a 查看容器确实创建了

[root@iZ2zeczvvb79boy368xppwZ ~]# docker ps -a
CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS       PORTS                              NAMES
767829ae1d7c  elasticsearch:6.4.0 "/usr/local/bin/dock…" About a minute ago Exited (1) About a minute ago                                elasticsearch
edfc400862eb  rabbitmq:3.7.15  "docker-entrypoint.s…" 14 hours ago   Up 14 hours      0.0.0.0:4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp rabbitmq
2ae2f3f8dc1f  nginx:1.10   "nginx -g 'daemon of…" 2 weeks ago   Up 2 weeks      0.0.0.0:80->80/tcp, 443/tcp                        nginx
164e4e7561df  redis:3.2    "docker-entrypoint.s…" 2 weeks ago   Up 2 weeks      0.0.0.0:6379->6379/tcp                          redis
eeabe57f1f21  mysql:5.7    "docker-entrypoint.s…" 2 weeks ago   Up 2 weeks      0.0.0.0:3306->3306/tcp, 33060/tcp                       mysql

查看日志docker logs -f elasticsearch命令查看日志发现jvm内存不足

[root@iZ2zeczvvb79boy368xppwZ ~]# docker logs -f elasticsearch
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007ebf15330000, 549668585472, 0) failed; error='Not enough space' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 549668585472 bytes for committing reserved memory.
# An error report file with more information is saved as:
# logs/hs_err_pid1.log

解决方法

修改jvm.options文件配置
首先查找jvm.options文件位置(每个服务器的位置可能不同)

[root@iZ2zeczvvb79boy368xppwZ ~]# find / -name jvm.options
/var/lib/docker/overlay2/d399872a3517b4d4acb0d2f70d0625c0f38251ffe5819a1cea00f8213de3e7f5/diff/usr/share/elasticsearch/config/jvm.options

vim进入文件修改虚拟机最小内存

[root@iZ2zeczvvb79boy368xppwZ ~]# vim /var/lib/docker/overlay2/d399872a3517b4d4acb0d2f70d0625c0f38251ffe5819a1cea00f8213de3e7f5/diff/usr/share/elasticsearch/config/jvm.options

找到-Xms属性,修改成512m(我的elasticsearch:6.4.0默认为1g)

## JVM configuration

################################################################
## IMPORTANT: JVM heap size
################################################################
##
## You should always set the min and max JVM heap
## size to the same value. For example, to set
## the heap to 4 GB, set:
##
## -Xms4g
## -Xmx4g
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
## for more information
##
################################################################

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms512m
-Xmx512m

保存并退出

vim中按i进入编辑模式,按ESC退出编辑模式,按:进入命令模式,然后在底部命令行输入w为保存,q为退出,q!为强制退出。
再次启动容器,docker ps查看容器启动成功

[root@iZ2zeczvvb79boy368xppwZ ~]# docker ps
CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS    PORTS                              NAMES
f5c4ed61196b  elasticsearch:6.4.0 "/usr/local/bin/dock…" 15 minutes ago  Up 15 minutes  0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp                    elasticsearch
edfc400862eb  rabbitmq:3.7.15  "docker-entrypoint.s…" 15 hours ago  Up 15 hours   0.0.0.0:4369->4369/tcp, 0.0.0.0:5671-5672->5671-5672/tcp, 0.0.0.0:15671-15672->15671-15672/tcp, 0.0.0.0:25672->25672/tcp rabbitmq
2ae2f3f8dc1f  nginx:1.10   "nginx -g 'daemon of…" 2 weeks ago   Up 2 weeks   0.0.0.0:80->80/tcp, 443/tcp                        nginx
164e4e7561df  redis:3.2    "docker-entrypoint.s…" 2 weeks ago   Up 2 weeks   0.0.0.0:6379->6379/tcp                          redis
eeabe57f1f21  mysql:5.7    "docker-entrypoint.s…" 2 weeks ago   Up 2 weeks   0.0.0.0:3306->3306/tcp, 33060/tcp                       mysql

总结

到此这篇关于docker启动elasticsearch时内存不足问题及解决方法的文章就介绍到这了,更多相关docker启动elasticsearch内存不足内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用docker快速部署Elasticsearch集群的方法

    本文将使用Docker容器(使用docker-compose编排)快速部署Elasticsearch 集群,可用于开发环境(单机多实例)或生产环境部署. 注意,6.x版本已经不能通过 -Epath.config 参数去指定配置文件的加载位置,文档说明: For the archive distributions, the config directory location defaults to $ES_HOME/config. The location of the >config direc

  • Docker下安装ElasticSearch和Kibana的示例代码

    1.前言 现在elasticsearch是比较火的,很多公司都在用,所以如果说还不知道es可能就会被人鄙视了.所以这里我就下决心来学习es,我比较钟爱于docker所有也就使用了docker来安装es,这里会详细介绍下安装的细节以及需要注意的地方.关于docker的安装在这里我就不去说明了,可以自行安装一下就可以了,很简单的,我保证你真的可能会爱上它.这里我使用的电脑是MacBook Pro 如果是linux的话其实基本相同,如果是Windows的话,可能就不太一样了,这里我也没有实际操作过,感

  • docker安装Elasticsearch7.6集群并设置密码

    Elasticsearch从6.8开始, 允许免费用户使用X-Pack的安全功能, 以前安装es都是裸奔.接下来记录配置安全认证的方法. 为了简化物理安装过程,我们将使用docker安装我们的服务. 一些基础配置 es需要修改linux的一些参数. 设置vm.max_map_count=262144 sudo vim /etc/sysctl.conf vm.max_map_count=262144 不重启, 直接生效当前的命令 sysctl -w vm.max_map_count=262144

  • docker 安装ElasticSearch 6.x的教程详解

    首先是拉去镜像(或者直接创建容器自然会拉去) docker pull elasticSearch:6.5.4 创建容器 docker run --name elasticsearch --net host -e "discovery.type=single-node" -e "network.host=IP地址" elasticsearch:6.5.4 启动 docker start elasticsearch 查看日志 docker logs elasticsea

  • Docker 简单部署 ElasticSearch的实现方法

    一.ElasticSearch是什么? Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单. 不过,Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它: 分布式的实时文件存储,每个字段都被索 引并可被搜索分布式的实时分析搜索引擎 可以扩展到上百台服务器,处理PB级结构化或非结构化数据 二.Docker 部署 ElasticS

  • 详解Docker下使用Elasticsearch可视化Kibana

    Kibana 作为Elasticsearch优秀的可视化的开源分析工具,我们下面使用Docker结合进行最简单的上手演示. docker 使用教程 在这里我们使用Linux系统作为演示 系统:Fedora28 内核: uname -r 4.16.2-300.fc28.x86_64 docker版本 docker --version Docker version 18.03.0-ce, build 0520e24 安装docker-compose sudo curl -L https://gith

  • docker启动elasticsearch时内存不足问题及解决方法

    问题 docker安装并启动elasticsearch时内存不足 系统centos8(阿里云ecs服务器) [root@iZ2zeczvvb79boy368xppwZ ~]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 安装过程 docker pull elasticsearch:6.4.0 修改虚拟机内存(貌似没有效果) sysctl -w vm.max_map_count=262144 使用docker run命令

  • 启动Tomcat时出现大量乱码的解决方法

    启动Tomcat乱码 1. 在 tomcat 的启动窗口打印的启动信息中包含了大量的中文乱码,虽然这些对 tomcat 本身的使用没有任何影响,但却非常碍眼,影响视觉效果! D:\jar\apache-tomcat-7.0.109\bin\catalina.bat run [2021-06-15 12:06:55,652] Artifact ch01hellospringmvc:war exploded: Waiting for server connection to start artifa

  • docker 启动elasticsearch镜像,挂载目录后报错的解决

    从docker hub下载了一个es的镜像,版本为6.4.2,详细信息如下: 比较重要的就是这两条,第一个是工作目录,挂载目录也需要和这里对应:第二个是启动命令,这里是指定了一个预先写好的启动脚本.所以我启动了一个空容器去查看了下容器内的情况: 容器内部目录结构如上图,data是用来存放数据,logs用来存放日志. 接着查看下启动脚本 /usr/local/bin/docker-entrypoint.sh 前半部分我也是看的一知半解,不过真正和挂载目录相关的是最后这部分,这里处理了挂载目录后的操

  • Docker启动PostgreSQL时创建多个数据库的解决方案

    1 前言 在文章<Docker启动PostgreSQL并推荐几款连接工具>中我们介绍如何通过Docker来启动PostgreSQL,但只有一个数据库,如果想要创建多个数据库在同一个Docker容器上怎么办呢? 2 两种方案 一种方案是把shell/sql脚本放入/docker-entrypoint-initdb.d/目录中,让容器启动的时候自动执行创建:另一种是通过shell脚本指定创建,本质是一样的.这里只介绍第一种. 把shell脚本或sql脚本放入指定目录,就会自动执行,两种脚本都可以.

  • 有关tomcat内存溢出的完美解决方法

    tomcat内存溢出设置JAVA_OPTS 答案1 设置Tomcat启动的初始内存 其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4.可以利用JVM提供的-Xmn -Xms -Xmx等选项可 进行设置 三.实例,以下给出1G内存环境下java jvm 的参数设置参考: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -D

  • java OOM内存泄漏原因及解决方法

    前言 这篇文章主要介绍了java OOM内存泄漏原因及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.什么是OOM OOM,全称"Out Of Memory",翻译成中文就是"内存用完了",当JVM因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时,就会抛出这个error 二.为什么会OOM.出现的原因是什么 为什么会没有内存了呢?原因不外乎有两点: ① 分配的少了:比如虚拟机本身可

  • 教你用MAT工具分析Java堆内存泄漏问题的解决方法

    一.MAT概述与安装 MAT,全称Memory Analysis Tools,是一款分析Java堆内存的工具,可以快速定位到堆内泄漏问题.该工具提供了两种使用方式,一种是插件版,可以安装到Eclipse使用,另一种是独立版,可以直接解压使用. 我把独立版MAT安装包放到了网盘上,方便直接下载 链接: https://pan.baidu.com/s/1DVHlHuSfi_4TVl2ei5YuLA 提取码: 42qt 独立版解压后,其内部文件是这样的-- 这里有一个MemoryAnalyzer.in

  • mysql安装时出现各种常见问题的解决方法

    小编为大家整理许多mysql安装时出现各种常见问题的解决方法,供大家参考,具体内容如下 问题一: 当各位在安装.重装时出现could not start the service mysql error:0 原因: 卸载mysql时并没有完全删除相关文件和服务,需要手动清除. 安装到最后一步execute时不能启动服务的解决方法: 首先,在管理工具->服务里面将MySQL的服务给停止(有的是没有安装成功,有这个服务,但是已经停止了的),win+R->cmd,打开命令提示符窗口,输入命令:sc d

  • Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法

    mysql数据库版本从5.6.28升到8.0.11过程中部署项目时遇到的问题和解决方法,具体介绍如下所示: 首先这个项目用到了hibernate4.2.0,链接mysql5.6.28没问题,换到8.0.11,启动报错 1.Caused by: org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set 报错就配置吧 启动项目不报错了,但是访问项目报错了 2.访问报错com

  • 在CentOS 7 上为docker配置端口转发以兼容firewall的解决方法

    在CentOS 7上当我们以类似下列命令将主机端口与容器端口映射时可能遇到无法访问容器服务的问题 docker run --name web_a -p 192.168.1.250:803:80 -d web_a:beta1.0.0 . 由于docker在执行此命令时,是向iptables注入了一条规则将主机803映射到容器80端口,但是CentOS 7中以firewalld服务替代了iptables.因此,上述命令的端口映射不会生效. 解决方法:首先观察一下主机上的网卡信息,确认增加了一个doc

随机推荐