本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對 Amazon Keyspaces 中的容量管理錯誤進行故障診斷
無法使用無伺服器容量? 以下是一些常見問題,以及如何解決這些問題。
無伺服器容量錯誤
本節概述如何識別與無伺服器容量管理相關的錯誤,以及如何解決這些錯誤。例如,當您的應用程式超過佈建的輸送量容量時,您可能會發現容量事件不足。
由於 Apache Cassandra 是叢集型軟體,專為在節點機群上執行而設計,因此沒有與無伺服器功能相關的例外訊息,例如輸送量。大多數驅動程式只了解 Apache Cassandra 中可用的錯誤碼,因此 Amazon Keyspaces 會使用相同的一組錯誤碼來維持相容性。
若要將 Cassandra 錯誤對應至基礎容量事件,您可以使用 Amazon CloudWatch 來監控相關的 Amazon Keyspaces 指標。導致用戶端錯誤的容量不足事件,可以根據導致事件的資源分類為這三個群組:
-
資料表 – 如果您選擇資料表的佈建容量模式,且應用程式超過佈建的輸送量,則可能會觀察到容量不足錯誤。如需詳細資訊,請參閱在Amazon 密Keyspaces 間中設定讀/寫容量模式。
-
分割區 – 如果特定分割區的流量超過 3,000 RCUs或 1,000 ,則可能會發生容量不足的事件WCUs。我們建議將流量均勻分散到分割區,作為最佳實務。如需詳細資訊,請參閱資料建模最佳實務:設計資料模型的建議。
-
連線 – 如果您超過每秒每個連線最大操作數的配額,可能會發生輸送量不足的情況。若要提高輸送量,您可以在設定與驅動程式的連線時增加預設連線數。
若要了解如何設定 Amazon Keyspaces 的連線,請參閱 如何在 Amazon Keyspaces 中設定連線。如需透過VPC端點最佳化連線的詳細資訊,請參閱 如何在 Amazon Keyspaces 中設定VPC端點的連線。
若要判斷哪個資源導致傳回用戶端錯誤的容量不足事件,您可以在 Amazon Keyspaces 主控台中檢查儀表板。依預設,主控台會在 資料表的容量標籤的容量和相關 CloudWatch 指標區段中提供最常見容量和流量相關指標的彙總檢視。
若要使用 Amazon 建立您自己的儀表板 CloudWatch,請檢查下列 Amazon Keyspaces 指標。
-
PerConnectionRequestRateExceeded
– 對 Amazon Keyspaces 的請求超過每個連線請求率的配額。每個 Amazon Keyspaces 的用戶端連線每秒最多可支援 3000 個CQL請求。您可以透過建立多個連線,每秒執行超過 3000 個請求。 -
ReadThrottleEvents
– 請求 Amazon Keyspaces 超過資料表的讀取容量。 -
StoragePartitionThroughputCapacityExceeded
– 請求超過分割區輸送量容量的 Amazon Keyspaces 儲存分割區。Amazon Keyspaces 儲存分割區每秒可支援高達 1000 WCU和WRU 3000 RCU/RRU 每秒。若要減少這些例外狀況,建議您檢閱資料模型,將讀取/寫入流量分散到更多分割區。 -
WriteThrottleEvents
– 請求 Amazon Keyspaces 超過資料表的寫入容量。
若要進一步了解 CloudWatch,請參閱 用 Amazon 監控 Amazon Keyspaces CloudWatch。如需 Amazon Keyspaces 所有可用 CloudWatch 指標的清單,請參閱 Amazon Keyspaces 指標和維度。
注意
若要開始使用顯示 Amazon Keyspaces 所有常見觀察指標的自訂儀表板,您可以使用AWS 範例
我從用戶端驅動程式收到NoHostAvailable
容量不足的錯誤
您正在查看資料表的 Read_Timeout
或 Write_Timeout
例外狀況。
重複嘗試寫入或從容量不足的 Amazon Keyspaces 資料表讀取,可能會導致驅動程式特有的用戶端錯誤。
使用 CloudWatch 來監控佈建和實際輸送量指標,以及資料表的容量不足事件。例如,沒有足夠輸送量的讀取請求Read_Timeout
會例外失敗,並發佈到ReadThrottleEvents
指標。沒有足夠輸送量的寫入請求Write_Timeout
會例外失敗,並會發佈到WriteThrottleEvents
指標。如需這些指標的詳細資訊,請參閱 Amazon Keyspaces 指標和維度。
若要解決這些問題,請考慮下列其中一個選項。
增加資料表的佈建輸送量,這是應用程式可以耗用的最大輸送量。如需詳細資訊,請參閱讀取容量單位和寫入容量單位。
讓服務透過自動擴展代表您管理輸送量容量。如需詳細資訊,請參閱使用 Amazon Keyspaces 自動擴展自 auto 管理輸送量容量。
選擇資料表的隨需容量模式。如需詳細資訊,請參閱設定隨需容量模式。
如果您需要增加帳戶的預設容量配額,請參閱 Amazon Keyspaces 的配額(阿帕奇卡桑德拉)。
您看到與超過分割區容量相關的錯誤。
當您看到錯誤時StoragePartitionThroughputCapacityExceeded
,會暫時超過分割區容量。這可能會由適應性容量或隨需容量自動處理。我們建議您檢閱資料模型,將讀取/寫入流量分散到更多分割區,以減少這些錯誤。Amazon Keyspaces 儲存分割區每秒可支援高達 1000 WCU和WRU 3000 RCU/RRU 每秒。若要進一步了解如何改善資料模型,以將讀取/寫入流量分散到更多分割區,請參閱 資料建模最佳實務:設計資料模型的建議。
Write_Timeout
例外狀況也可能是同時寫入操作的速率提高,包括相同邏輯分割區中的靜態和非靜態資料。如果預期流量會執行多個並行寫入操作,其中包含相同邏輯分割區內的靜態和非靜態資料,建議您分別寫入靜態和非靜態資料。分別寫入資料也有助於最佳化輸送量成本。
您看到與超出連線請求速率相關的錯誤。
由於下列其中一個原因PerConnectionRequestRateExceeded
,您看到 。
-
您可能沒有為每個工作階段設定足夠的連線。
-
您的連線可能比可用對等項少,因為您未正確設定VPC端點許可。如需VPC端點政策的詳細資訊,請參閱 使用 Amazon Keyspaces 的界面 VPC 端點。
-
如果您使用的是 4.x 驅動程式,請檢查您是否已啟用主機名稱驗證。根據預設,驅動程式會啟用TLS主機名稱驗證。此組態會導致 Amazon Keyspaces 顯示為驅動程式的單節點叢集。建議您關閉主機名稱驗證。
建議您遵循下列最佳實務,以確保您的連線和輸送量最佳化:
-
設定CQL查詢輸送量調校。
Amazon Keyspaces 每秒支援每秒最多 3,000 個TCP連線CQL的查詢,但驅動程式可以建立的連線數量沒有限制。
大多數開放原始碼 Cassandra 驅動程式會建立與 Cassandra 的連線集區,並透過該連線集區載入平衡查詢。Amazon Keyspaces 向驅動程式公開 9 個對等 IP 地址。大多數驅動程式的預設行為是建立每個對等 IP 地址的單一連線。因此,使用預設設定的驅動程式CQL查詢輸送量上限為每秒 27,000 個CQL查詢。
若要增加此數字,建議您增加驅動程式在其連線集區中維護的每個 IP 地址的連線數量。例如,將每個 IP 地址的最大連線數設定為 2 會將驅動程式的最大輸送量加倍,達到每秒 54,000 個CQL查詢。
-
最佳化您的單節點連線。
根據預設,大多數開放原始碼 Cassandra 驅動程式會在建立工作階段時,建立與
system.peers
資料表中公告之每個 IP 地址的一或多個連線。不過,某些組態可能會導致驅動程式連接至單一 Amazon Keyspaces IP 地址。如果驅動程式嘗試對對等節點進行SSL主機名稱驗證 (例如 DataStax Java 驅動程式),或者透過VPC端點連線,則可能會發生這種情況。若要取得與多個 IP 地址連線的驅動程式相同的可用性和效能,建議您執行下列動作:
-
根據所需的用戶端輸送量,將每個 IP 的連線數增加到 9 或更高。
-
建立自訂重試政策,以確保重試在相同的節點上執行。如需詳細資訊,請參閱
-
如果您使用VPC端點,請授予用來連線至 Amazon Keyspaces 的IAM實體存取權限,以查詢您的 VPC以取得端點和網路介面資訊。這可改善負載平衡並提高讀取/寫入輸送量。如需詳細資訊,請參閱使用介面 VPC 端點資訊填入system.peers表格項目。
-
我在資料匯入期間收到寫入逾時錯誤
使用 cqlsh
COPY
命令上傳資料時,您會收到逾時錯誤。
Failed to import 1 rows: WriteTimeout - Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info={'received_responses': 0, 'required_responses': 2, 'write_type': 'SIMPLE', 'consistency': 'LOCAL_QUORUM'}, will retry later, attempt 1 of 100
Amazon Keyspaces 使用 ReadTimeout
和 WriteTimeout
例外狀況來指示寫入請求何時因輸送量容量不足而失敗。為了協助診斷容量不足的例外狀況,Amazon Keyspaces 會在 Amazon 中發佈下列指標 CloudWatch。
WriteThrottleEvents
ReadThrottledEvents
StoragePartitionThroughputCapacityExceeded
若要解決資料載入期間容量不足的錯誤,請降低每個工作者的寫入速率或總擷取速率,然後重試上傳資料列。如需詳細資訊,請參閱步驟 4:配cqlsh COPY FROM置設置。如需更強大的資料上傳選項,請考慮使用 DSBulk,可從GitHub 儲存庫
我看不到鍵空間或資料表的實際儲存體大小
您看不到鍵空間或資料表的實際儲存體大小。
若要進一步了解資料表的儲存體大小,請參閱 在資料表層級評估您的成本。您也可以開始計算資料表中的資料列大小,來估計儲存體大小。計算資料列大小的詳細指示可於 取得估計 Amazon Keyspaces 中的行大小。