問題:
Data長度超過設定引數的最大值
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變數)
dubbo.protocol.dubbo.payload=11557050(預設為8M,即8388608)
第二種方案
在dubbo-provider.xml檔案配置
<dubbo:provider id="payload" payload="11557050"/>
本篇文章如有幫助到您,請給「翎野君」點個贊,感謝您的支援。
首發連結:https://www.cnblogs.com/lingyejun/p/18227953