現(xiàn)象描述:
采樣通道:日志數(shù)據(jù) -> flume -> kafka -> flink
flume到kafka的數(shù)據(jù)處理時(shí)間是980毫秒;flink的數(shù)據(jù)處理時(shí)間是十幾毫秒。
解決方法:
flume方面:
flume數(shù)量不夠:增加日志服務(wù)器以增加并行度;
(1)自身:增加內(nèi)存flume-env.sh 4-6g
-Xmx與-Xms最好設(shè)置一致,減少內(nèi)存抖動(dòng)帶來的性能影響,如果設(shè)置不一致容易導(dǎo)致頻繁fullgc。
(2)找朋友:增加服務(wù)器臺(tái)數(shù)
(3)taildir source的batchsize設(shè)成1
# batchsize是每次處理的數(shù)據(jù)條數(shù)越高,處理的數(shù)據(jù)越多,延遲越高。
kafka數(shù)據(jù)積壓的問題,主要的解決辦法是:
1)增加Kafka對(duì)應(yīng)的分區(qū)數(shù)(比如:期望處理數(shù)據(jù)的總吞吐量是100M/s。但是實(shí)際最多每個(gè)分區(qū)的生產(chǎn)能力和消費(fèi)能力的最小值是20M/s,那么我們就需要設(shè)置5個(gè)或者6個(gè)分區(qū)),2)要求下一級(jí)消費(fèi)者配套增加CPU核數(shù),動(dòng)態(tài)增加Kafka服務(wù)器集群。
kafka ack設(shè)成0(ack有0有1有-1。0的可靠性最差,但是速度最快)
注:ack有3個(gè)可選值,分別是1,0,-1。
ack=1,簡(jiǎn)單來說就是,producer只要收到一個(gè)分區(qū)副本成功寫入的通知就認(rèn)為推送消息成功了。這個(gè)副本必須是leader副本。只有l(wèi)eader副本成功寫入了,producer才會(huì)認(rèn)為消息發(fā)送成功。
ack=0,簡(jiǎn)單來說就是,producer發(fā)送一次就不再發(fā)送了,不管是否發(fā)送成功。
ack=-1,簡(jiǎn)單來說就是,producer只有收到分區(qū)內(nèi)所有副本的成功寫入的通知才認(rèn)為推送消息成功了。








暫無數(shù)據(jù)