【解决方法】Dubbo报错Data length too large,调整payload大小解决
问题:
Data长度超过设置参数的最大值
1 2 3 4 5 6 7 | cause: java.io.IOException: Data length too large: 10008608 , max payload: 8388608 , channel: NettyChannel [channel=[id: 0x09396776 , /...]] java.io.IOException: Data length too large: 10008608 , max payload: 8388608 , channel: NettyChannel [channel=[id: 0x09396776 , /...]] at com.alibaba.dubbo.remoting.transport.AbstractCodec.checkPayload(AbstractCodec.java: 49 ) at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encodeResponse(ExchangeCodec.java: 285 ) at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encode(ExchangeCodec.java: 77 ) at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.encode(DubboCountCodec.java: 39 ) at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalEncoder.encode |
发现问题:
当dubbo服务提供层向消费层传输大数据容量的对象时,会受到Dubbo的限制。
原因
在Dubbo中,你可以增加"payload"参数来增加最大负载限制。在你的provider配置中,可以这样设定:
<dubbo:provider payload="9391996" />
或者在具体的服务中进行配置:
<dubbo:service interface="your.interface" payload="9391996" />
这样,payload就被设置为9391996,略大于你当前的数据长度。请小心处理这个配置,因为过大的payload可能会导致内存压力增加。
解决问题:
第一种方案
修改提供方的dubbo配置, 在dubbo.properties 中增加如下(前提是你要在dubbo的配置文件中,指定为下面这个apollo变量)
1 | dubbo.protocol.dubbo.payload= 11557050 (默认为8M,即 8388608 ) |
第二种方案
在dubbo-provider.xml文件配置
1 | <dubbo:provider id= "payload" payload= "11557050" /> |
本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。
出处:http://www.cnblogs.com/lingyejun/
若本文如对您有帮助,不妨点击一下右下角的【推荐】。
如果您喜欢或希望看到更多我的文章,可扫描二维码关注我的微信公众号《翎野君》。
转载文章请务必保留出处和署名,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2023-06-03 idea自动编译失效,每次修改代码都需要重新clean install
2023-06-03 Python写入文件报错‘gbk’ codec can’t encode character的解决办法