搭建RocketMQ踩的坑-内存不足

本文介绍了在使用RocketMQ过程中遇到的内存不足问题及其解决方法。通过调整Java虚拟机参数,成功解决了启动过程中的内存溢出错误。

环境是vmvare+ubuntu
1、http://rocketmq.apache.org/docs/quick-start/ 按照官网来启动mqnamesrv和mqbroker报错
错误如下
There is insufficient memory for the Java Runtime Environment to continue.

There is insufficient memory for the Java Runtime Environment to continue.
Native memory allocation (mmap) failed to map 8589934592 bytes for committing reserved memory.
Possible reasons:
The system is out of physical RAM or swap space
In 32 bit mode, the process size limit was hit
Possible solutions:
Reduce memory load on the system
Increase physical memory or swap space
Check if swap backing store is full
Use 64 bit Java on a 64 bit OS
Decrease Java heap size (-Xmx/-Xms)
Decrease number of Java threads
Decrease Java thread stack sizes (-Xss)
Set larger code cache with -XX:ReservedCodeCacheSize=
This output file may be truncated or incomplete.

Out of Memory Error (os_linux.cpp:2640), pid=2428, tid=0x00007fada5259700

JRE version: (8.0_172-b11) (build )
Java VM: Java HotSpot(TM) 64-Bit Server VM (25.172-b11 mixed mode linux-amd64 compressed oops)
Java运行时环境的内存不足,无法继续,本机内存分配(mmap)未能映射8589934592字节,用于提交保留内存
解决办法,找到runserver.sh和runbroker.sh,编辑
JAVA_OPT=”${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m”
改成如上就可以了

RocketMQ是一个高可用、高性能、可伸缩的分布式消息中间件系统。当使用RocketMQ时,优化内存使用是很重要的,可提高系统的性能和效率。以下是一些RocketMQ内存调优的建议: 1. 设置JVM内存参数:在RocketMQ应用程序中,可以通过设置JVM内存参数来限制JVM虚拟机的使用内存。通过设置-Xmx和-Xms参数,可以指定JVM最大和最小使用的内存。将这两个参数设置为相同的值,可以避免JVM在运行时动态扩展内存,这有助于减少在堆栈中的GC发生。 2. 调整消息存储路径: RocketMQ中的消息存储是基于文件系统文件的形式,因此在存储消息时会产生大量的文件。过多的文件会使磁盘IO过载、使系统执行缓慢。因此需要在存储路径上对消息存储进行优化,最好是使用SSD硬盘,并定时清理过期的数据,以减少存储文件的数量。 3. 配置内存缓存方式:RocketMQ可以使用内部缓存缓存数据,以减轻内存使用量、提高读取性能。可使用RocketMQ的消息存储的缓存方式,通过setting.levelDBCacheSize配置来控制缓存大小,同时也可以降低磁盘IO操作。 4. 确定使用同步与异步刷盘:RocketMQ拥有同步刷盘和异步刷盘两种方式,可通过setting.syncFlush设置其方式。如果需要高性能的话,建议使用异步刷盘,虽然这样速度比较快,但也有可能导致数据的丢失。如果需要更高可靠性的话,可以使用同步方式刷盘。 5. 控制消息堆积:如果在消息消费不及时的情况下,RocketMQ将会堆积这些消息,占据更多的内存。为了避免这种情况,可以通过消费者实例数量的控制,这样可以让消费者尽快的处理掉所有的消息,从而降低堆积使用。 总之,在调优RocketMQ时,需要综合考虑磁盘IO、内存使用量、网络延迟等因素。通过配置JVM内存参数、优化硬件设备、选择合适的内存缓存方式、确定使用同步与异步刷盘方式和控制消息堆积,可以有效地优化RocketMQ的内存使用效率,从而达到更好的系统性能。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值