為什麼我會在 Amazon MSK 叢集裡遇到高耗用者延遲的問題?

1 分的閱讀內容
0

我想要疑難排解 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 叢集裡的耗用者延遲問題。

解決方法

先決條件

執行下列命令以使用 Amazon CloudWatch 指標來判斷耗用者延遲:

./kafka-consumer-groups.sh --bootstrap-server <broker endpoints> --group <groupid> --describe --command-config <properties>

注意:<broker endpoints> 取代您的代理程式端點,用 <groupid> 取代您的群組 ID,還有用 <properties> 取代您的屬性。

疑難排解與耗用者延遲相關的常見問題

驗證耗用者與分區比率: 耗用者群組中的每個耗用者都會根據群組中的可用耗用者,從分區子集讀取。如果每個耗用者是從多個分區消耗,則可能是處理大量資訊並導致延遲。

在可能的情況下,將耗用者與分區比率保持在接近 1:1。如果延遲持續存在,則增加分區和耗用者的數量。

識別離群值: 離群值可能會導致耗用者延遲。檢查是否有某一個耗用者分區的處理量明顯超過耗用者群組中的其他分區。識別問題來源以便套用適當的解決方案。重新啟動應用程式是最終選擇。

檢查耗用者主機上的資源使用量: 監控耗用者應用程式上的資源,查看是否有任何資源匱乏。緩慢的耗用者會導致訊息處理速度緩慢,並導致耗用者延遲。

檢查耗用者群組重新平衡: 在耗用者群組重新平衡期間,會撤銷所有耗用者分區指派。因此,耗用者停止閱讀該主題,進而導致延遲增加。如需相關資訊,請參閱如何疑難排解耗用者群組的持續重新平衡?

評估耗用者組態: 當生產者寫入速度超過耗用者讀取的速度時,可能會發生耗用者延遲。若要在資料產生後立即讀取資料,請在耗用者組態中調整 fetch.min.bytesfetch.partition.min.bytes。屬性 max.poll.interval.msmax.poll.records 可能會影響耗用者提交其偏移量的頻率以及一次獲取的訊息數量。調整這些設定可幫助減少耗用者延遲。

管理訊息大小: 較大的訊息大小可能會導致耗用者延遲,特別是當您的耗用者應用程式處理訊息緩慢時。增加耗用者執行個體數量來處理工作負載。

檢閱您的應用程式設計: 耗用者應用程式的設計可能會影響耗用者延遲。檢查您的應用程式是否設計為處理您正在處理的訊息量。擴充您的應用程式,或最佳化您的處理邏輯。

監控代理程式資源使用量: 監控代理程式上的 CPU 使用量,以便檢查代理程式是否超載,進而增加延遲。如需疑難排解高 CPU 使用量的詳細資訊,請參閱如何疑難排解 Amazon MSK 叢集裡一或多個代理程式的高 CPU 使用量?

針對工作負載最佳化叢集: 檢查 MSK 叢集中的 Kafka 代理程式是否已針對您的工作負載進行設定和最佳化。確保您的主題分區均勻分佈在您的代理程式之間。確認您的複寫因子已恰當設定。

判斷網路延遲: 耗用者和 MSK 叢集之間的高網路延遲可能會導致高耗用者延遲。檢查耗用者應用程式與 MSK 叢集之間的網路連線。如果連線速度很慢,請將您的耗用者應用程式移到更靠近 Kafka 代理程式的位置;或者,最佳化您的網路組態。

AWS 官方
AWS 官方已更新 1 年前