Flume OutOfMemoryError Error
Running flume not long to report the following exception:
2016-08-24 17:35:58,927 (Flume Thrift IPC Thread 8) [ERROR- Org.apache.flume.channel.ChannelProcessor.processEventBatch (channelprocessor.java:196)] Error while writing to Required channel:org.apache.flume.channel.memorychannel{name:memorychannel}
2016-08-24 17:35:59,332 (sinkrunner-pollingrunner-defaultsinkprocessor) [error-kafka.utils.logging$class.error ( logging.scala:97)] Failed to collate messages by topic, partition due TO:GC overhead limit exceeded
2016-08-24 17:35:59,332 (Flume Thrift IPC Thread 8) [error-org.apache.thrift.processfunction.process ( processfunction.java:41)] Internal Error processing Appendbatch
Java.lang.OutOfMemoryError:GC Overhead limit exceeded
At Java.util.Arrays.copyOf (arrays.java:3332)
At Java.lang.AbstractStringBuilder.expandCapacity (abstractstringbuilder.java:137)
At Java.lang.AbstractStringBuilder.ensureCapacityInternal (abstractstringbuilder.java:121)
At Java.lang.AbstractStringBuilder.append (abstractstringbuilder.java:421)
At Java.lang.StringBuffer.append (stringbuffer.java:272)
At Java.io.StringWriter.write (stringwriter.java:112)
At Java.io.PrintWriter.write (printwriter.java:456)
At Java.io.PrintWriter.write (printwriter.java:473)
At Java.io.PrintWriter.print (printwriter.java:603)
At Java.io.PrintWriter.println (printwriter.java:756)
At Java.lang.throwable$wrappedprintwriter.println (throwable.java:764)
At Java.lang.Throwable.printStackTrace (throwable.java:658)
At Java.lang.Throwable.printStackTrace (throwable.java:721)
At Org.apache.log4j.DefaultThrowableRenderer.render (defaultthrowablerenderer.java:60)
At Org.apache.log4j.spi.ThrowableInformation.getThrowableStrRep (throwableinformation.java:87)
At Org.apache.log4j.spi.LoggingEvent.getThrowableStrRep (loggingevent.java:413)
At Org.apache.log4j.WriterAppender.subAppend (writerappender.java:313)
At Org.apache.log4j.WriterAppender.append (writerappender.java:162)
At Org.apache.log4j.AppenderSkeleton.doAppend (appenderskeleton.java:251)
At Org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders (appenderattachableimpl.java:66)
At Org.apache.log4j.Category.callAppenders (category.java:206)
At Org.apache.log4j.Category.forcedLog (category.java:391)
At Org.apache.log4j.Category.log (category.java:856)
At Org.slf4j.impl.Log4jLoggerAdapter.error (log4jloggeradapter.java:576)
At Org.apache.flume.channel.ChannelProcessor.processEventBatch (channelprocessor.java:196)
At Org.apache.flume.source.thriftsource$thriftsourcehandler.appendbatch (thriftsource.java:457)
At Org.apache.flume.thrift.thriftsourceprotocol$processor$appendbatch.getresult (ThriftSourceProtocol.java:259)
At Org.apache.flume.thrift.thriftsourceprotocol$processor$appendbatch.getresult (ThriftSourceProtocol.java:247)
At Org.apache.thrift.ProcessFunction.process (processfunction.java:39)
At Org.apache.thrift.TBaseProcessor.process (tbaseprocessor.java:39)
At Org.apache.thrift.server.abstractnonblockingserver$framebuffer.invoke (abstractnonblockingserver.java:478)
At Org.apache.thrift.server.Invocation.run (invocation.java:18)
Obviously the data I collected was too big to be enough for Flume's JVM Memory.
With Ps-aux | grep Flume Find Flume process also can see how much memory flume uses.
Workaround:
1. Vim Bin/flume-ng
Found in the java_opts= "-xmx20m", it is started by default, the maximum available memory is 20, as long as it is a bit larger to increase it.
2. or locate the Flume-env.sh.template file in the Flume conf directory
CP flume-env.sh.template flume-env.sh
Vim flume-env.sh
Just remove the comment from the configuration below.
# Export java_opts= "-xms100m-xmx2000m-dcom.sun.management.jmxremote"
Flume OutOfMemoryError Error