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        

 如果这时还是启动不了,使用top命令查看消耗cpu较多的进程

使用kill -9 进程号 杀死进程

再次启动elasticsearch就可以了

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值