[ https://issues.apache.org/jira/browse/FLUME-2765?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15405400#comment-15405400 ]
Qu Peng commented on FLUME-2765: -------------------------------- [~hshreedharan],have you submit the patch? I'm using flume 1.6.0 now, and I have same problem, too. Please help me, thanks! > ThriftSource spaws too many threads > ----------------------------------- > > Key: FLUME-2765 > URL: https://issues.apache.org/jira/browse/FLUME-2765 > Project: Flume > Issue Type: Bug > Components: Sinks+Sources > Affects Versions: v1.6.0 > Reporter: Tobias Heintz > Attachments: thread-dump-flume-1.6.txt > > > We are in the process of migrating from the old Flume to version 1.6. We are > using the ThriftSource with the new KafkaSink. Here's what our config looks > like: > {code} > agent1.channels = ch1 > agent1.sources = thriftSrc > agent1.sinks = kafka > agent1.channels.ch1.type = memory > agent1.channels.ch1.capacity = 10000 > agent1.channels.ch1.transactionCapacity = 500 > # THRIFT > agent1.sources.thriftSrc.type = thrift > agent1.sources.thriftSrc.channels = ch1 > agent1.sources.thriftSrc.bind = 0.0.0.0 > agent1.sources.thriftSrc.port = 4042 > agent1.sources.thriftSrc.threads = 150 # if we don't set this option, the > source keeps creating more and more threads until all heap memory is used up > and then it crashes > # KAFKA > agent1.sinks.kafka.channel = ch1 > agent1.sinks.kafka.type = org.apache.flume.sink.kafka.KafkaSink > agent1.sinks.kafka.batchSize = 50 > agent1.sinks.kafka.brokerList = broker.example.com:9092 > agent1.sinks.kafka.requiredAcks = 1 > agent1.sinks.kafka.topic = topic1 > {code} > We have been noticing some bad behavior by the Thrift source/Thrift server > using the JMX connection. If we don't restrict the number of threads, it > spawns thousands of new threads, apparently one for every message it > receives. These threads all have the name "Flume Thrift IPC Thread [number]" > and according to the jvisualvm console they are always idle. At some point > all of the JVM memory is used up through creating new threads and flume > crashes with the following exception: > {code} > 12 Aug 2015 16:56:11,721 ERROR [Thread-1] > (org.apache.thrift.server.TThreadedSelectorServer$SelectorThread.run:544) - > run() exiting due to uncaught error > java.lang.OutOfMemoryError: unable to create new native thread > at java.lang.Thread.start0(Native Method) > at java.lang.Thread.start(Thread.java:714) > at > java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:949) > at > java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1360) > at > org.apache.thrift.server.TThreadedSelectorServer.requestInvoke(TThreadedSelectorServer.java:310) > at > org.apache.thrift.server.AbstractNonblockingServer$AbstractSelectThread.handleRead(AbstractNonblockingServer.java:209) > at > org.apache.thrift.server.TThreadedSelectorServer$SelectorThread.select(TThreadedSelectorServer.java:576) > at > org.apache.thrift.server.TThreadedSelectorServer$SelectorThread.run(TThreadedSelectorServer.java:536) > {code} > When we set the option to restrict the number of threads, the server sticks > to that number and runs smoothly, however it drops messages occasionally (may > have a different cause). > I am wondering whether this is a bug or in some way expected behavior? What > are the best practices for using a ThriftSource? Are there further parameters > to possibly tune (like channel.capacity)? -- This message was sent by Atlassian JIRA (v6.3.4#6332)