RocketMQ 内存优化


RocketMQ 的默认内存占用非常高,是4×4g的,普通人是消耗不起的,所以第一件事情就是调整RocketMQ的占用内存。

调整RocketMQ的内存目前我所知道的有两个方面

  1. MQ的启动脚本可以调整内存
  2. mqbroker和mqnamesrv的配置可以调整内存
1.启动脚本的内存调整

启动脚本可以配置MQ整体内存大小,有两个启动脚本,runbroker.sh 和runserver.sh。
脚本里面的默认配置信息是

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=320m"

以上配置可以根据自己情况进行调整,记得runbroker.sh 和runserver.sh都要修改。

1.mqbroker和mqnamesrv的内存调整

这两项配置也很重要,默认是500m到1g。具体文件配置是mqbroker.xml和mqnamesrv.xml。
文件里面的配置信息是

<options>
         <-Xms200m></-Xms200m>
         <-Xmx200m></-Xmx200m>
         <-XX:NewSize>50M</-XX:NewSize>
         <-XX:MaxNewSize>50M</-XX:MaxNewSize>
         <-XX:PermSize>30M</-XX:PermSize>
         <-XX:MaxPermSize>30M</-XX:MaxPermSize>
 </options>

以上可以根据自己情况进行配置。

要注意的事情是mqbroker.xml和mqnamesrv.xml的内存不要超过runbroker.sh 和runserver.sh的内存,不然会引起内存不够导致奔溃。

Docker 部署RocketMQ

如果有使用docker,那么部署RocketMQ是个轻松愉快的事情,内存控制更加方便,主要部署脚本以下
前提部署环境能够上网,docker会自动拉取MQ镜像

1.rmqserver部署

docker run -d -p 9876:9876 --name rmqserver -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" foxiswho/rocketmq:server

2.rmqbroker 部署

docker run -d -p 10911:10911 -p 10909:10909 --name rmqbroker --link rmqserver:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -v /data/rocketmq2/broker.conf:/etc/rocketmq/broker.conf foxiswho/rocketmq:broker

3.broker.conf配置文件内容

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
autoCreateTopicEnable = true
autoCreateSubscriptionGroup = true

以上内容保存为broker.conf即可

接下来更精彩,请勿走开(以下是私事,不喜欢别往下看了)

基于WEB的开源堡垒机

在浏览器上无需安装任何插件就可以控制内网机器,协议支撑RDP、VNC、SSH等。
官网地址:http://bb.yun-api.com/

好用的HTTP模拟请求工具

市面上有很多HTTP模拟请求工具,有yapi,有ApiPost,好不好用在此不做评价。这里推荐使用BB-API,功能全面,免费使用、资源无限制,自动生成接口文档,界面简洁大气。支持局域网部署,打造属于你、公司的HTTP 协议管理工具。
官网地址http://yun-api.com/

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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内存使用效率,从而达到更好的系统性能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值