Apache Kafka 客戶端的建議設定
以下是從 Apache Kafka 用戶端應用程式使用 Azure 事件中樞 的建議組態。
Java 用戶端組態屬性
生產者和取用者組態
屬性 | 建議的值 | 允許的範圍 | 備註 |
---|---|---|---|
metadata.max.age.ms |
180000 (近似) | < 240000 | 可以降低以更快挑選元數據變更。 |
connections.max.idle.ms |
180000 | < 240000 | Azure 會關閉輸入傳輸控制通訊協定 (TCP) 閑置 > 240,000 毫秒,這可能會導致在無效連線上傳送(因為傳送逾時而顯示為過期批次)。 |
僅產生者設定
您可以在這裡找到產生者設定。
屬性 | 建議的值 | 允許的範圍 | 備註 |
---|---|---|---|
max.request.size |
1000000 | < 1046528 | 如果傳送大於 1,046,528 個字節的要求,服務就會關閉連線。 此值必須變更,並導致高輸送量產生案例的問題。 |
retries |
> 0 | 可能需要增加 delivery.timeout.ms 值,請參閱檔。 | |
request.timeout.ms |
30000 .. 60000 | > 20000 | 事件中樞在內部預設為至少 20,000 毫秒。 雖然接受具有較低逾時值的要求,但不保證客戶端行為。 請確定您的 request.timeout.ms 至少是 60000 的建議值,而您的 session.timeout.ms 至少是建議的 30000 值。 將這些設定過低可能會導致取用者逾時,這會導致重新平衡(這會導致更多逾時、導致更重新平衡等等)。 |
metadata.max.idle.ms |
180000 | > 5000 | 控制生產者快取閑置主題的元數據時間長度。 如果上次產生主題之後經過的時間超過元數據閑置持續時間,則主題的元數據會被遺忘,且下一次存取主題將會強制元數據擷取要求。 |
linger.ms |
> 0 | 針對高輸送量案例,揮之不去的值應該等於最高可容忍的值,以利用批處理。 | |
delivery.timeout.ms |
根據公式設定 (request.timeout.ms + linger.ms ) * retries |
||
compression.type |
uncompressed, gzip |
目前僅支援 gzip 壓縮。 |
僅限取用者設定
您可以在這裡找到取用者設定。
屬性 | 建議的值 | 允許的範圍 | 備註 |
---|---|---|---|
heartbeat.interval.ms |
3000 | 3000 是預設值,不應該變更。 | |
session.timeout.ms |
30000 | 6000 .. 300000 | 從 30000 開始,如果看到因為遺漏活動訊號而頻繁重新平衡,請增加。 請確定您的 request.timeout.ms 至少為 60000 的建議值,而且您的 session.timeout.ms 至少是建議的 30000 值。 將這些設定過低可能會導致取用者逾時,這會導致重新平衡(這會導致更多逾時、導致更重新平衡等等)。 |
max.poll.interval.ms |
300000 (預設值) | >session.timeout.ms | 用於重新平衡逾時,因此不應該設定太低。 必須大於 session.timeout.ms。 |
librdkafka 組態屬性
主要 librdkafka
組態檔 (link) 包含下列各節所述屬性的擴充描述。
生產者和取用者組態
屬性 | 建議的值 | 允許的範圍 | 備註 |
---|---|---|---|
socket.keepalive.enable |
true | 如果連線預期為閑置,則為必要專案。 Azure 會關閉輸入 TCP 閑置 > 240,000 毫秒。 | |
metadata.max.age.ms |
~ 180000 | < 240000 | 可以降低以更快挑選元數據變更。 |
僅產生者設定
屬性 | 建議的值 | 允許的範圍 | 備註 |
---|---|---|---|
retries |
> 0 | 預設值為 2147483647。 | |
request.timeout.ms |
30000 .. 60000 | > 20000 | 事件中樞在內部預設為至少 20,000 毫秒。 librdkafka 默認值為 5000,這可能會造成問題。 雖然接受具有較低逾時值的要求,但不保證客戶端行為。 |
partitioner |
consistent_random |
請參閱 librdkafka 檔 | consistent_random 是預設值和最佳。 在大部分情況下,最好處理空白和 Null 索引鍵。 |
compression.codec |
none, gzip |
目前僅支援 gzip 壓縮。 |
僅限取用者設定
屬性 | 建議的值 | 允許的範圍 | 備註 |
---|---|---|---|
heartbeat.interval.ms |
3000 | 3000 是預設值,不應該變更。 | |
session.timeout.ms |
30000 | 6000 .. 300000 | 從 30000 開始,如果看到因為遺漏活動訊號而頻繁重新平衡,請增加。 |
max.poll.interval.ms |
300000 (預設值) | >session.timeout.ms | 用於重新平衡逾時,因此不應該設定太低。 必須大於 session.timeout.ms。 |
進一步注意事項
請查看下表中的常見組態相關錯誤案例。
徵兆 | 問題 | 解決方案 |
---|---|---|
因重新平衡而發生位移認可失敗 | 您的取用者在呼叫輪詢() 之間等待太久,而服務正在將取用者從群組中踢出。 | 您有幾個選項:
|
高生產輸送量的網路例外狀況 | 如果您使用 Java 用戶端 + 預設 max.request.size,您的要求可能太大。 | 請參閱稍早所述的 Java 設定。 |
下一步
如需所有 Azure 服務的配額和限制,請參閱 Azure 訂用帳戶和服務限制、配額和限制 。