Adjusted frame length exceeds 1677216:16777318-discarded

2023-10-07 20:40

本文主要是介绍Adjusted frame length exceeds 1677216:16777318-discarded,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题背景

消息队列的nameser和broker运行后,在console无法显示,进入broker.lognamesrv.log 显示如下报错Adjusted frame length exceeds 1677216:16777318-discarded
在这里插入图片描述

问题原因

经定位,rocketmq底层集群间使用netty通信,rocketmq在过去的使用中创建了大量的topic以及消费组(代码逻辑是根据时间戳去每次生成新的消费组),这一数据量不断增长,达到netty阈值,导致无法通信

GPT解释(实测无效,需要修改bin/runserver.sh bin/runbroker.sh而不是broker.conf)

com.rocketmq.remoting.frameMaxLength 是 RocketMQ 中的一个属性,用于配置消息传输的最大帧长度。每个消息在传输过程中都会被拆分成多个帧进行传输,该属性用于限制每个帧的最大长度。

要配置 com.rocketmq.remoting.frameMaxLength,你需要编辑 RocketMQ 的配置文件,具体取决于你是使用 Apache RocketMQ 还是 Alibaba RocketMQ。

对于 Apache RocketMQ,你需要编辑 conf/broker.conf(Broker 配置文件)或者 conf/namesrv.conf(NameServer 配置文件),在文件中添加如下配置:

com.rocketmq.remoting.frameMaxLength=xxxx

其中,xxxx 是你希望设置的最大帧长度,单位是字节。

对于 Alibaba RocketMQ,你需要编辑 conf/2m-2s-sync/broker-a.properties(Broker 配置文件)或者 conf/namesrv.properties(NameServer 配置文件),在文件中添加如下配置:

com.rocketmq.remoting.frameMaxLength=xxxx

同样,xxxx 是你想要设置的最大帧长度,以字节为单位。

配置完成后,保存文件并重新启动 RocketMQ 以使配置生效。请注意,修改配置文件可能需要管理员权限。

需要注意的是,com.rocketmq.remoting.frameMaxLength 的默认值是 4MB(4194304 字节),如果你的消息超过这个长度,你可能需要增加该值以支持更大的消息。然而,增加最大帧长度也会增加网络传输的负载和延迟,因此需要根据实际情况进行权衡和调整。

临时解决方案

在rocketmq的bin目录下修改配置

在bin/runserver.sh     bin/runbroker.sh加上一行:
JAVA_OPT="${JAVA_OPT} -Dcom.rocketmq.remoting.frameMaxLength=33554432

重启集群后生效

永久解决方案

修改topic和消费组的生成策略,定期清除

参考文档

https://blog.csdn.net/xxxzzzqqq_/article/details/130102465

这篇关于Adjusted frame length exceeds 1677216:16777318-discarded的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/160307

相关文章

Qt中window frame的影响

window frame 在创建图形化界面的时候,会创建窗口主体,上面会多出一条,周围多次一圈细边,这就叫window frame窗口框架,这是操作系统自带的。 这个对geometry的一些属性有一定影响,主要体现在Qt坐标系体系: 窗口当中包含一个按钮,这个按钮的坐标系是以父元素为参考,那么这个参考是widget本体作为参考,还是window frame作为参考,这两种参考体系都存在

Cannot read property ‘length‘ of null while opening vscode terminal

同一问题地址:Cannot read property ‘length’ of null while opening vscode terminal 问题描述 One day, 我在ubuntu 18.04下用vscode打开一个项目,并想和往常一样在vscode使用终端,发现报错Cannot read property 'length' of null。 解决 打开setting.jso

java中的length与length()与size()

正确用法 Array.length int[] arr = {1,2,3};int x = arr.length;//arr.length = 3 String.length() String s = "123";int x = s.length();//s.length() = 3 Collection.size() ArrayList<Integer> list = n

mysql数据库中的字符串长度函数:LENGTH() 与 CHAR_LENGTH()

在数据库管理系统中,处理字符串数据时,了解字符串的长度是一个常见且重要的需求。无论是为了数据验证、格式化输出,还是在进行复杂的查询操作中,准确获取字符串的长度都是必不可少的。SQL标准提供了几种函数来帮助我们实现这一目标,其中LENGTH()和CHAR_LENGTH()是两个常被提及的函数,尽管它们在某些数据库系统中可能表现出相似的行为,但在一些细节上存在差异。本文将深入探讨这两个函数的用法及其区

iOS——frame和bounds的区别

把frame理解为占用区域,把bounds理解为边界。View在旋转过程中,其实自己的坐标系统并没有发生改变,bounds中的origin只能通过setBounds方法修改。 frame 定义了视图在其父视图坐标系统中的位置和大小。其坐标系是相对于俯视图的坐标系。 bounds 定义了视图自身坐标系统中的位置和大小。其坐标系是相对于自己本身视图的坐标系。 UIView.h中的注释: // 如

IOS界面开发基础——Frame与Bounds

参考资料:http://blog.csdn.net/hherima/article/details/39501857 在IOS的UI开发中,经常需要对view进行定位。比较常用的概念就是Frame和Bound,通过view这两个属性,就可以任意的“摆弄”我们的view了。 这两个属性都可以定义view的位置和大小,但这两个属性之间有什么区别和联系呢?经过资料查找,记录如下: Frame

.NetCore+vue3上传图片 Multipart body length limit 16384 exceeded.

实现目标。点击图片上传头像 效果图 前端部分图片上传关键代码 <div class="avatar-wrap"><el-imagestyle="width: 154px; height: 154px":src="form.headPic":fit="fit"/></div><div class="upload-box"><el-uploadclass="avatar-uploader":

whose UTF8 encoding is longer than the max length 32766

问题描述:java.lang.IllegalArgumentException: Document contains at least one immense term in field=“cf_jg.keyword” (whose UTF8 encoding is longer than the max length 32766) 原因:设置为keyword类型的字段,插入很长的大段内容后,报

FFmpeg源码:compute_frame_duration函数分析

一、compute_frame_duration函数的定义 compute_frame_duration函数定义在FFmpeg源码(本文演示用的FFmpeg源码版本为7.0.1)的源文件libavformat/demux.c中: /*** Return the frame duration in seconds. Return 0 if not available.*/static void

c/c++: warning: ISO C90 forbids variable length array ‘a’

文章目录 介绍C99安全问题类似的alloca安全问题的防护 介绍 https://en.cppreference.com/w/c/language/array @item -Wvla @opindex Wvla @opindex Wno-vla Warn if a variable-length array is used in the code. @option{-Wno-v