View a markdown version of this page

處理主機替換和連線停滯 - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

處理主機替換和連線停滯

當 Neptune 取代主機時 (例如,在維護或容錯移轉期間),與該主機的現有連線會變成無效。在容器化環境中,如果用戶端未正常處理取代,這可能會卡在容器中的所有執行緒。

使用目前的用戶端版本

如果您使用 Gremlin 查詢語言,請使用與您的 Neptune 引擎版本相容的 TinkerPop 驅動程式版本 (請參閱 使用 Gremlin 存取 Neptune 圖形 以取得相容性資料表)。如果您使用 Java 驅動程式,請考慮neptune-gremlin-client使用 TinkerPop Java 驅動程式的包裝函式,新增連線管理功能,例如端點運作狀態檢查和容錯移轉處理。它遵循與基礎 TinkerPop 驅動程式相同的版本相容性規則。

根據您的 Neptune neptune-gremlin-client版本允許的內容,使用 3.x 版 (或至少 2.0.7 版)。這些較新的版本可改善彈性和連線處理。

對於具有 Neo4j 驅動程式的 openCypher 使用者,當您在容錯移轉期間偵測到連線失敗時,請關閉並重新建立Driver物件。Neptune 支援 Bolt 通訊協定版本 1 到 4.0。如需詳細資訊,請參閱使用 openCypher 和 Bolt 的 Neptune 最佳實務

使用叢集或讀取器端點

請勿直接連線至執行個體端點。使用叢集端點進行寫入,並使用讀取器端點進行讀取。如果您必須使用執行個體端點搭配 neptune-gremlin-client,請透過 /status API 啟用端點運作狀態檢查篩選。

使用容錯能力設定活體探查

將您的 Kubernetes 活體度探查failureThreshold設定為至少 30 個 10 秒期間 (總計 300 秒)。當 Neptune 完成主機替換時,這可防止 Kubernetes 在大約 5 分鐘的時段內重新啟動 Pod。

使用退避實作重試

主機替換期間的單一失敗請求不應使容器當機。在連線失敗時以指數退避實作重試邏輯,以便替換期間的暫時性錯誤無需介入即可解決。如需可重試例外狀況的指引,請參閱 Neptune 交易例外狀況