解决服务端Adjusted frame length exceeds 4096: 5637 - discarded问题

  • 1. 具体错误
  • 2. 错误原因
    • 2.1 长度格式问题
    • 2.2 长度大小问题
  • 3. 解决方法

1. 具体错误

下面展示一些 错误详情

io.netty.handler.codec.TooLongFrameException: Adjusted frame length exceeds 4096: 18247 - discardedat io.netty.handler.codec.LengthFieldBasedFrameDecoder.fail(LengthFieldBasedFrameDecoder.java:503)at io.netty.handler.codec.LengthFieldBasedFrameDecoder.failIfNecessary(LengthFieldBasedFrameDecoder.java:489)at io.netty.handler.codec.LengthFieldBasedFrameDecoder.exceededFrameLength(LengthFieldBasedFrameDecoder.java:376)at io.netty.handler.codec.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:419)at io.netty.handler.codec.LengthFieldBasedFrameDecoder.decode(LengthFieldBasedFrameDecoder.java:332)at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:498)at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:437)at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)at java.lang.Thread.run(Thread.java:748)

2. 错误原因

2.1 长度格式问题

netty自带的LengthFieldBasedFrameDecodr长度编码协议,长度偏移取值必须为16进制表示。

new LengthFieldBasedFrameDecoder(4*1024,0,2);
// 长度位:000C 表示 12 长度
// eg:000C321453215435413415206753 (byte[]转16进制表示)

2.2 长度大小问题

调整后的帧长度超过4096:18247-已丢弃。本人在netty服务端对数据包进行处理时,使用了LengthFieldBasedFrameDecodr长度协议解码器。部分代码如下:

@Override
public void initChannel(SocketChannel ch) {//长度协议的解码器ch.pipeline().addLast(new LengthFieldBasedFrameDecoder(4*1024,0,2));ch.pipeline().addLast(new SocketServerHandler());//控制类
}

而长度协议定一个最大可接收长度为4*1024 = 4096。故服务端接收超过4096个字节之后,服务端当做垃圾包丢弃了。

3. 解决方法

把netty服务端的长度协议的解码器最大可接收长度根据需求更改到足够长即可。

new LengthFieldBasedFrameDecoder(20*1024,0,2);

Adjusted frame length exceeds 4096: 5637 - discarded 服务端解决相关推荐

  1. java 服务端解决ajax跨域问题

    java 服务端解决ajax跨域问题 参考文章: (1)java 服务端解决ajax跨域问题 (2)https://www.cnblogs.com/fx2008/p/4024971.html (3)h ...

  2. 服务端解决跨域问题的方案(二)

    一分钟说明 本文主要基于Nginx的配置来解决服务端跨域问题. 涉及知识点: - Nginx的配置 Nginx的跨域配置 location /project {proxy_pass http://10 ...

  3. 服务端解决跨域问题的方案(一)

    转自: http://blog.csdn.net/james_wade63/article/details/50772041 跨域是指html文件所在的服务器与ajax请求的服务器是不同的ip+por ...

  4. 服务端解决故障的处理思路

    简单记录一下解决服务器故障的思路,以便今后迅速定位问题. Java服务端 1.出错一般来说是两种情况: (1)代码逻辑出错了 (2)传入参数出错了 2.在上述情况都正确的情况下,那么业务逻辑可能是正常 ...

  5. oracle 客户端无法连接,Oracle客户端无法连接服务端解决方法及步骤

    客户端无法连接服务端数据库,原因有网络,配置,文件访问权限,数据库服务是否已启动 等问题导致,一般排查的步骤如下: 1.检查操作系统级别网络是否通畅 ping 192.168.10.1 2.检查数据库 ...

  6. 【HLSDK系列】服务端 AddToFullPack 函数

    服务端会给客户端发送一些数据,其中两大种类数据是 clientdata_t 和 entity_state_t 这里我们说说 entity_state_t 这个结构体. 你在丢在地上的枪.C4等等是服务 ...

  7. Spring cloud网关gateway代理websocket报Max frame length of 65536 has been exceeded

    Spring cloud网关gateway代理websocket报io.netty.handler.codec.http.websocketx.CorruptedWebSocketFrameExcep ...

  8. 2016届360公司PHP服务端开发笔试和面试之所得所感

    这是一篇叙述自己在360公司参加笔试和面试的过程,可能面试的职位并不是你所学的方向,但是如果你能从中学到些什么或者吸取我的教训,那么作者就非常知足了.本着"学习别人是怎么失败的,活着出来的人 ...

  9. websocket传输canvas图像数据给C++服务端opencv图像实现web在线实时图像处理

    为什么80%的码农都做不了架构师?>>>    前后端的耦合想了很久,上下课都在思考怎么做,然后终于憋出来了.这是之前搞的一个视觉计算的项目,boss叫对接到前端,于是就产生了这样一 ...

最新文章

  1. golang适合做什么_这年头中年女人适合做什么兼职
  2. OpenGL绘制五颜六色的三角形并旋转
  3. 解决: Unable to connect to zookeeper server within timeout: 5000
  4. 关于response格式转换
  5. 这个星期压力貌似比较大啊!
  6. C语言中的面向对象2
  7. 先进先出算法_数据结构与算法之初识栈与队列
  8. SQL Server 和 HSQLDB 中使用 merge into 完成 saveOrUpdate
  9. 学计算机编程笔记本电脑推荐,想选一款笔记本电脑,主要用来学编程,有什么好的推荐吗?...
  10. 欧氏空间距离和内积_欧氏空间的内积与线性变换
  11. 解决Chrome谷歌浏览器Adobe Flash Player 插件已被屏蔽的问题
  12. work信息每日汇总
  13. 基于Android的人脸识别
  14. 华为鸿蒙麒麟玉兔_华为注册整本山海经?操作系统取名鸿蒙芯片取名麒麟
  15. c语言ftell的作用,C语言的文件随机访问fseek()和ftell()函数
  16. strtok函数用法
  17. canvas绘制象棋谱
  18. 智航学编程005(七彩虹)
  19. You-Get, Annie 视频下载器 一键安装脚本
  20. 企业微信 jssdk调用 扫一扫 安卓不行 ios又可以

热门文章

  1. oracle与大学合作,深入合作 CUUG于哈尔滨师范大学成立Oracle WDP俱乐部
  2. 蚂蚁、小鸟、大象 引发的面向对象问题
  3. [vijos1474] 雷曼兔(csapc)
  4. Spherical Harmonics(球谐函数)与PRT
  5. HTML5+CSS3实现华为官网
  6. 【小程序项目开发-- 京东商城】uni-app之商品列表页面 (上)
  7. flink-cdc初体验
  8. 五子棋等级考试软件的开发(七)
  9. android音乐播放器开发在线加载歌词,android开发计算器源码
  10. 21点:赌场里最可能赢钱的游戏