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

                  歡迎訪問 生活随笔!

                  生活随笔

                  當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

                  编程问答

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

                  發布時間:2024/4/18 编程问答 45 豆豆
                  生活随笔 收集整理的這篇文章主要介紹了 kafka 报错:kafka server:Message was too large ,server rejected it to avoid allocation 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

                  總結

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

                  如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。