日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

kafka 报错:kafka server:Message was too large ,server rejected it to avoid allocation

發(fā)布時(shí)間:2024/4/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kafka 报错:kafka server:Message was too large ,server rejected it to avoid allocation 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

kafka報(bào)錯(cuò)信息:
kafka server:Message was too large ,server rejected it to avoid allocation?
kafka版本:
kafka_2.11-1.0.0
?
原因分析:
查看kafka配置,默認(rèn)單條消息最大為1M,當(dāng)單條消息長(zhǎng)度超過(guò)1M時(shí),就會(huì)出現(xiàn)發(fā)送到broker
失敗,從而導(dǎo)致消息在producer的隊(duì)列中一直累積,直到撐爆生產(chǎn)者的內(nèi)存。
?
于是趕緊修改kafka配置,解決問(wèn)題。主要修改步驟如下:
1.修改kafka的broker配置:message.max.bytes(默認(rèn):1000000B),這個(gè)參數(shù)表示單條
消息的最大長(zhǎng)度。在使用kafka的時(shí)候,應(yīng)該預(yù)估單條消息的最大長(zhǎng)度,不然導(dǎo)致發(fā)送失敗。
2.修改kafka的broker配置:replica.fetch.max.bytes (默認(rèn): 1MB),broker可復(fù)制的
消息的最大字節(jié)數(shù)。這個(gè)值應(yīng)該比message.max.bytes大,否則broker會(huì)接收此消息,但無(wú)
法將此消息復(fù)制出去,從而造成數(shù)據(jù)丟失。
3.修改消費(fèi)者程序端配置:fetch.message.max.bytes (默認(rèn) 1MB) – 消費(fèi)者能讀取的最大
消息。這個(gè)值應(yīng)該大于或等于message.max.bytes。如果不調(diào)節(jié)這個(gè)參數(shù),就會(huì)導(dǎo)致消費(fèi)者無(wú)
法消費(fèi)到消息,并且不會(huì)爆出異常或者警告,導(dǎo)致消息在broker中累積,此處要注意。
需要考慮的問(wèn)題:
?1.從性能上考慮:通過(guò)性能測(cè)試,kafka在消息為10K時(shí)吞吐量達(dá)到最大,更大的消息會(huì)降低
吞吐量,在設(shè)計(jì)集群的容量時(shí),尤其要考慮這點(diǎn)。
2.可用的內(nèi)存和分區(qū)數(shù):Brokers會(huì)為每個(gè)分區(qū)分配replica.fetch.max.bytes參數(shù)指定的
內(nèi)存空間,假設(shè)replica.fetch.max.bytes=1M,且有1000個(gè)分區(qū),則需要差不多1G的內(nèi)存,
確保 分區(qū)數(shù)*最大的消息不會(huì)超過(guò)服務(wù)器的內(nèi)存,否則會(huì)報(bào)OOM錯(cuò)誤。同樣地,消費(fèi)端
的fetch.message.max.bytes指定了最大消息需要的內(nèi)存空間,同樣,分區(qū)數(shù)*最大需要內(nèi)存
空間不能超過(guò)服務(wù)器的內(nèi)存。所以,如果你有大的消息要傳送,則在內(nèi)存一定的情況下,只
能使用較少的分區(qū)數(shù)或者使用更大內(nèi)存的服務(wù)器。
3.垃圾回收:更大的消息會(huì)讓GC的時(shí)間更長(zhǎng)(因?yàn)閎roker需要分配更大的塊),隨時(shí)關(guān)注GC的
日志和服務(wù)器的日志信息。如果長(zhǎng)時(shí)間的GC導(dǎo)致kafka丟失了zookeeper的會(huì)話,則需要配
置zookeeper.session.timeout.ms參數(shù)為更大的超時(shí)時(shí)間。
?
?
解決辦法:
?
在kafka的文件server.properties中添加如下三個(gè)個(gè)配置項(xiàng),均設(shè)置為標(biāo)準(zhǔn)的10M:
?
#broker能接收消息的最大字節(jié)數(shù)
message.max.bytes=10485760? ? (10M)
#broker可復(fù)制的消息的最大字節(jié)數(shù)
replica.fetch.max.bytes=10485760?? (10M)
#消費(fèi)者端的可讀取的最大消息
fetch.message.max.bytes=10485760? ? (10M)
?
或者在啟動(dòng)的時(shí)候加入到參數(shù)后面:
bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic my-topic --config max.message.bytes=128000
?

總結(jié)

以上是生活随笔為你收集整理的kafka 报错:kafka server:Message was too large ,server rejected it to avoid allocation的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。