[
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)