在日誌收集服務器上使用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使用狀況以及收集的數據是否異常。日誌