中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kafka消息體大小設置的一些方法

發布時間:2021-06-26 09:13:04 來源:億速云 閱讀:904 作者:chen 欄目:大數據

本篇內容介紹了“Kafka消息體大小設置的一些方法”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

微信公眾號「后端進階」,專注后端技術分享:Java、Golang、WEB框架、分布式中間件、服務治理等等。

還記得前幾天有個小伙伴跟我反饋發送消息時提示請求數據過大的異常嗎?經過調整 max.request.size 的大小之后,又報了了如下異常

查看相關資料后,發現 Broker 端對 Producer 發送過來的消息也有一定的大小限制,這個參數叫 message.max.bytes,這個參數決定了 Broker 能夠接收到的最大消息的大小,它的默認值為 977 KB,而 max.request.size 的值已經設置成 2M 大小了,很顯然已經比 message.max.bytes 大了很多,因此消息大于 997KB 時,就會拋出如上異常。

值得一提的是,主題配置也有一個參數,叫 max.message.bytes,它只針對某個主題生效,可動態配置,可覆蓋全局的 message.max.bytes,好處就是可以針對不同主題去設置 Broker 接收消息的大小,而且不用重啟 Broker。

這還沒完,消費端拉取消息數據的大小也需要更改,這個參數叫 fetch.max.bytes,這個參數決定消費者單次從 Broker 獲取消息的最大字節數,那么問題來了,如果該參數值比 max.request.size 小,那么會導致消費者很可能消費不了比 fetch.max.bytes 大的消息。

所以綜合起來,需要這么設置:

producer端:
max.request.size=5242880(5M)
broker:
message.max.bytes=6291456(6M)
consumer:
fetch.max.bytes=7340032(7M)

max.request.size < message.max.bytes < fetch.max.bytes

另外補充一點,還記得之前說過的 batch.size 參數的作用嗎,從源碼可看出,Producer 每次發送的消息封裝成 ProducerRecord,然后利用消息累加器 RecordAccumulator 添加到 ProducerBatch 中,由于每次創建 ProducerBatch 都需要分配一個 batch.size 大小的內存空間,頻繁創建和關閉會導致性能極大開銷,所以 RecordAccumulator 內部有個 BufferPool,它實現了緩存的復用,只不過只針對 batch.size 大小的 BufferByte 進行復用,如果大于 batch.size 的 ProducerBatch,它并不會加入 BufferPool 中,也就不會復用。

之前有個疑問就是:假如 max.request.size 大于 batch.size,那么該條消息會不會分多個 batch 發送到 broker?

答案顯然是不會,根據上述所說,如果一個 ProducerRecord 就已經超出了 batch.size 的大小,那么 ProducerBatch 僅包含一個 ProducerRecord,并且該 ProducerBatch 并不會加入到 BufferPool 中。

所以,在 Kafka Producer 調優過程中,根據業務需求,需要特別注意 batch.size 與 max.request.size 之間的大小值的設定,避免內存空間頻繁地創建和關閉。

“Kafka消息體大小設置的一些方法”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贡山| 林口县| 澎湖县| 凤山县| 凤冈县| 岳池县| 新乡市| 鱼台县| 山东省| 沽源县| 武邑县| 石渠县| 卓资县| 台前县| 莎车县| 铁力市| 金川县| 库车县| 绥中县| 绩溪县| 水城县| 秦皇岛市| 龙川县| 台东县| 平乡县| 无棣县| 湖北省| 淳安县| 江阴市| 神池县| 报价| 旅游| 安康市| 恩施市| 辛集市| 清镇市| 南京市| 禄丰县| 福清市| 达日县| 福安市|