canal无法正常启动 错误:There is insufficient memory for the Java Runtime Environment to continue.

项目场景:

设备:腾讯云轻量级服务器 2c4g
系统:CentOS 7.6 64bit
涉案人员:rabbitmq、canal1.1.16
背景:正在搭建服务器环境


问题描述

启动项目,按照原来的设想是:canal监听mysql,从而将mysql中变更的数据交给rabbitmq消费,实现redis和elasticsearch对mysql的数据同步

结果发现当我改变数据时,redis和elasticsearch数据无改变

首先怀疑是rabbitmq出问题了,我确认了一遍配置文件,然后放开了15672端口远程查看,重复一遍流程,确认不是rabbitmq问题

这下破案了,我去查看canal的状态
嗯?我canal进程呢?
我此时以为是我没启动canal,于是再次启动并查看canal状态
耍我是吧
发现canal就是启动不了
遇到这种情况当然是先看错误日志了
错误日志
日志内容
在这里插入图片描述
翻译一下:Java运行时环境没有足够的内存来继续运行,本机内存分配(mmap)映射2147483648字节提交预留内存失败。


原因分析:

官方给出的可能的问题原因:
1、系统的物理内存或交换空间不足
2、进程运行时启用了CompressedOops, Java堆可能阻塞了本机堆的增长

我这里的原因是canal默认设置的java堆大小和堆栈大小实在是太大了,内存空间不足。


解决方案:

官方给出的可能的解决方案:
1、减少系统的内存负载
2、增加物理内存或交换空间
3、检查交换存储是否已满
4、减少Java堆大小(-Xmx/-Xms)
5、减少Java线程的数量
6、减少Java线程栈大小(-Xss)
7、使用-XX:ReservedCodeCacheSize=设置更大的代码缓存
8、该输出文件可能被截断或不完整。

我这里的解决方案是减小java堆大小和堆栈大小

找到startup.sh并打开
在这里插入图片描述
修改里面的xms和xmx,调整为合适的大小
在这里插入图片描述


结果

完美结束,项目运行正常

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值