sqlo 发表于 2015-9-17 07:10:25

Flume MemoryChannel ChannelFullException

先贴上异常信息



1 08 May 2015 17:55:23,751 WARN (org.apache.flume.source.AvroSource.append:350)- Avro source r1: Unable to process event. Exception follows.
2 org.apache.flume.ChannelException: Unable to put event on required channel: org.apache.flume.channel.MemoryChannel{name: c2}
3   at org.apache.flume.channel.ChannelProcessor.processEvent(ChannelProcessor.java:275)
4   at org.apache.flume.source.AvroSource.append(AvroSource.java:348)
5   at sun.reflect.GeneratedMethodAccessor18.invoke(Unknown Source)
6   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
7   at java.lang.reflect.Method.invoke(Method.java:606)
8   at org.apache.avro.ipc.specific.SpecificResponder.respond(SpecificResponder.java:88)
9   at org.apache.avro.ipc.Responder.respond(Responder.java:149)
10   at org.apache.avro.ipc.NettyServer$NettyServerAvroHandler.messageReceived(NettyServer.java:188)
11   at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
12   at org.apache.avro.ipc.NettyServer$NettyServerAvroHandler.handleUpstream(NettyServer.java:173)
13   at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:558)
14   at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:786)
15   at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
16   at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:458)
17   at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:439)
18   at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:311)
19   at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
20   at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:558)
21   at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:553)
22   at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
23   at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
24   at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:84)
25   at org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:471)
26   at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:332)
27   at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:35)
28   at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:102)
29   at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
30   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
31   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
32   at java.lang.Thread.run(Thread.java:745)
33 Caused by: org.apache.flume.ChannelFullException: Space for commit to queue couldn't be acquired. Sinks are likely not keeping up with sources, or the buffer size is too tight
34   at org.apache.flume.channel.MemoryChannel$MemoryTransaction.doCommit(MemoryChannel.java:130)
35   at org.apache.flume.channel.BasicTransactionSemantics.commit(BasicTransactionSemantics.java:151)
36   at org.apache.flume.channel.ChannelProcessor.processEvent(ChannelProcessor.java:267)
37   ... 29 more
问题分析
  从标红部分大致可以看出,MemoryChannel满了,source写不进去。
  从程序运行表现来看,可能导致flume堵死,不能传输日志了(我遇到的现象)

解决办法
  参考 http://blog.iyunv.com/hijk139/article/details/8465094
  增大MemoryChannel的容量,增加处理时间
  修改配置文件



# channel c2 的配置
a1.channels.c2.type = memory
a1.channels.c2.capacity = 1000000
a1.channels.c2.transactionCapacity = 80000
a1.channels.c2.keep-alive = 30
  
页: [1]
查看完整版本: Flume MemoryChannel ChannelFullException