记录阿里云服务器docker启动Canal失败的现象和原因分析

您所在的位置:网站首页 ftp启动服务 记录阿里云服务器docker启动Canal失败的现象和原因分析

记录阿里云服务器docker启动Canal失败的现象和原因分析

2023-03-13 11:15| 来源: 网络整理| 查看: 265

前言:

最近在B站学习heima的SpringCloud微服务架构,在多级缓存章节需要使用Canal进行数据同步,在使用docker启动Canal时遇到启动失败的问题,本文记录我在遇到问题——分析问题——解决问题的一系列过程,希望能够给小伙伴们带来一些同类问题的解决思路。

问题描述

首先我使用docker命令启动Canal,命令如下:

docker run -p 11111:11111 --name canal \ -d canal/canal-server:v1.1.5

然后使用docker ps查看启动的容器,发现过一会canal容器就消失了,然后我再次启动canal,这次使用docker logs -f canal查看启动日志(如下所示)。

[root@iZbp13wljqcqnvp68gyubuZ tmp]# docker logs -f canal115 DOCKER_DEPLOY_TYPE=VM ==> INIT /alidata/init/02init-sshd.sh ==> EXIT CODE: 0 ==> INIT /alidata/init/fix-hosts.py ==> EXIT CODE: 0 ==> INIT DEFAULT Generating SSH1 RSA host key: [ OK ] Starting sshd: [ OK ] Starting crond: [ OK ] ==> INIT DONE ==> RUN /home/admin/app.sh ==> START ... 原因分析:

通过查看启动日志我发现原来canal根本没有启动成功,此时我有些迷茫,因为我的操作步骤是跟着老师一步一步来的,基本上是没有缺失的,那就应该不是操作流程或者配置文件相关的问题了。我开始在网上搜索 docker启动canal失败 的相关字样。后来在这篇文章找到了思路:canal启动失败相关文章。

文章谈到有可能是内存不够导致canal启动失败,然后我就是用free命令查看我的内存,状况如下:

[root@iZbp13wljqcqnvp68gyubuZ tmp]# free [root@iZbp13wljqcqnvp68gyubuZ tmp]# free total used free shared buff/cache available Mem: 3688712 3109152 184392 1992 395168 322260 Swap: 0 0 0 [root@iZbp13wljqcqnvp68gyubuZ tmp]#

可以看到我4G的服务器内存,此时已经使用了3个多G了,基本没什么剩余的,然后因为我知道自己的服务器并未安装什么其他的软件,就只有docker容器在运行,我使用docker ps查看我的运行中的容器,发现之前学习过程中用到的ES集群还在运行,此时我基本可以确定是ES集群占用了太多内存而导致内存爆满了。

解决方案:

知道了问题的原因,那么就好解决了,使用docker-compose ps查看我的ES集群,然后使用docker-compose stop命令关闭集群中的节点。

[root@iZbp13wljqcqnvp68gyubuZ tmp]# docker-compose ps Name Command State Ports -------------------------------------------------------------------------------- es01 /bin/tini -- /usr/local/bi ... Up 0.0.0.0:9200->9200/tcp, 9300/tcp es02 /bin/tini -- /usr/local/bi ... Up 0.0.0.0:9201->9200/tcp, 9300/tcp es03 /bin/tini -- /usr/local/bi ... Up 0.0.0.0:9202->9200/tcp, 9300/tcp [root@iZbp13wljqcqnvp68gyubuZ tmp]# docker-compose stop es01 es02 es03 Stopping es03 ... done Stopping es02 ... done Stopping es01 ... done [root@iZbp13wljqcqnvp68gyubuZ tmp]# docker-compose ps Name Command State Ports -------------------------------------------------------- es01 /bin/tini -- /usr/local/bi ... Exit 143 es02 /bin/tini -- /usr/local/bi ... Exit 143 es03 /bin/tini -- /usr/local/bi ... Exit 143

关闭后再次使用free命令查看内存消耗情况(如下),可以看到,我的内存此时已经释放很多了。

[root@iZbp13wljqcqnvp68gyubuZ tmp]# free total used free shared buff/cache available Mem: 3688712 768172 2525280 1788 395260 2666224 Swap: 0 0 0

再次尝试使用Docker启动Canal,成功!

[root@iZbp13wljqcqnvp68gyubuZ tmp]# docker logs -f canal DOCKER_DEPLOY_TYPE=VM ==> INIT /alidata/init/02init-sshd.sh ==> EXIT CODE: 0 ==> INIT /alidata/init/fix-hosts.py ==> EXIT CODE: 0 ==> INIT DEFAULT Generating SSH1 RSA host key: [ OK ] Starting sshd: [ OK ] Starting crond: [ OK ] ==> INIT DONE ==> RUN /home/admin/app.sh ==> START ... start canal ... start canal successful ==> START SUCCESSFUL ... 总结:

当使用服务器启动项目或者部署其他应用时,由于服务器的内存通常较小(购买的几十块钱一年的云服务器,内存比较小),因此特别需要特别注意内存的使用。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3