Flume数据截断问题

问题


发送到SyslogUDPSource的单个请求数据大小超过2k的话会被截断,即只保留2k,其他数据丢失

原因


SyslogUDPSource使用AdaptiveReceiveBufferSizePredictorFactory来处理buffer,理想的状况是buffer size会随着数据大小扩容,最大64k,但实际并没有。因为AdaptiveReceiveBufferSizePredictorFactory只针对NioDatagramWorker起作用,但SyslogUDPSource使用OioDatagramChannelFactory,buffer size永远是2k,超过就截断

解决办法


改用FixedReceiveBufferSizePredictorFactory,固定大小64k,解决