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

 更新时间:2020年07月31日 11:10:40   作者:HardCorePlayer  
这篇文章主要介绍了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内存不足内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker安装MySQL并使用Navicat连接的操作方法

    Docker安装MySQL并使用Navicat连接的操作方法

    这篇文章主要介绍了Docker安装MySQL并使用Navicat连接,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • Docker v1.13 新功能介绍

    Docker v1.13 新功能介绍

    本篇文章主要介绍了Docker v1.13 新功能介绍,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Next.js Docker镜像私有部署从零实现

    Next.js Docker镜像私有部署从零实现

    这篇文章主要为大家介绍了Next.js Docker镜像私有部署从零实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Docker-compose详解和LNMP搭建全过程

    Docker-compose详解和LNMP搭建全过程

    Docker-Compose是Docker的一个官方开源项目,用于快速编排Docker容器集群,它允许用户在YAML文件中定义多个服务,每个服务可以包含一个或多个容器,这些容器可以通过Dockerfile构建或直接运行现有镜像,Docker-Compose支持多种配置选项
    2024-11-11
  • Docker创建容器时目录权限踩坑

    Docker创建容器时目录权限踩坑

    这篇文章主要介绍了Docker创建容器时目录权限踩坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Docker的安装以及更换仓库源详细图文教程

    Docker的安装以及更换仓库源详细图文教程

    Docker是一个开源的应用容器引擎,它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,下面这篇文章主要给大家介绍了关于Docker的安装以及更换仓库源的相关资料,需要的朋友可以参考下
    2024-07-07
  • Docker如何部署SQL Server 2017 Always On集群

    Docker如何部署SQL Server 2017 Always On集群

    这篇文章主要介绍了Docker如何部署SQL Server 2017 Always On集群问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 详解如何在Docker部署Go程序

    详解如何在Docker部署Go程序

    Docker是一种轻量级的容器技术,可以为应用程序的部署提供统一、可移植的运行环境,下面我们来讲讲如何将Go应用程序部署到Docker的容器吧
    2023-08-08
  • docker 部署prometheus+grafana的过程详解

    docker 部署prometheus+grafana的过程详解

    这篇文章主要介绍了docker 部署prometheus+grafana的过程,本文通过示例图文相结合给大家介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • Docke更新应用程序的过程详解

    Docke更新应用程序的过程详解

    这篇文章主要介绍了Docke更新应用程序,在本节中,您学习了如何更新和重建容器,以及如何停止和删除容器,需要的朋友可以参考下
    2023-11-11

最新评论