在日志收集服务器上使用Flume(1.6)的Kafka Sink将日志数据发送至Kafka,在Flume Agent启动以后,发现每一个Agent的CPU使用率都很是高,而咱们须要在每台机器上启动多个Flume Agent来收集不一样类型的日志,若是每一个Agent都这样,那确定会把机器的CPU吃满了,刚开始使用jstack定位到是org.apache.flume.sink.kafka.process()的问题,后来google了下,果真是这个代码有问题。找到一个ISSUES: https://issues.apache.org/jira/browse/FLUME-2632java
发现该问题在Flume1.7中fix掉了,接着找到github中Flume1.7的代码,具体就是:git
https://github.com/apache/flume/blob/trunk/flume-ng-sinks/flume-ng-kafka-sink/src/main/java/org/apache/flume/sink/kafka/KafkaSink.javagithub
使用该代码编译后替换掉flume-ng-kafka-sink-1.6.0.jar中的KafkaSink.class,重启Flume Agent以后,问题解决。apache
图中point1是运行了一个flume agent;服务器
在point2时刻,我启动了第二个flume agent,CPU一下上来一截;google
在point3时候,我使用fix以后的flume-ng-kafka-sink-1.6.0.jar,先后重启了两个flume agent,CPU使用率降低了不少。spa
接下来继续观察CPU使用状况以及收集的数据是否异常。日志