

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

# 處理主機替換和連線停滯
<a name="best-practices-ecs-eks-host-replacement"></a>

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

**使用目前的用戶端版本**

如果您使用 Gremlin 查詢語言，請使用與您的 Neptune 引擎版本相容的 TinkerPop 驅動程式版本 （請參閱 [使用 Gremlin 存取 Neptune 圖形](access-graph-gremlin.md) 以取得相容性資料表）。如果您使用 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 最佳實務](best-practices-opencypher.md)。

**使用叢集或讀取器端點**

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

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

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

**使用退避實作重試**

主機替換期間的單一失敗請求不應使容器當機。在連線失敗時以指數退避實作重試邏輯，以便替換期間的暫時性錯誤無需介入即可解決。如需可重試例外狀況的指引，請參閱 [Neptune 交易例外狀況](https://docs.aws.amazon.com/neptune/latest/userguide/transactions-exceptions.html)。