

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 处理主机更换和连接失速问题
<a name="best-practices-ecs-eks-host-replacement"></a>

当 Neptune 更换主机时（例如，在维护或故障转移期间），与该主机的现有连接将失效。在容器化环境中，如果客户端不能优雅地处理替换，这可能会使容器中的所有线程停滞不前。

**使用当前的客户端版本**

如果您使用 Gremlin 查询语言，请使用与 Neptune 引擎版本兼容的 TinkerPop 驱动程序版本（参见兼容性[使用 Gremlin 访问 Neptune 图形](access-graph-gremlin.md)表）。如果您使用 Java 驱动程序，请考虑`neptune-gremlin-client`使用 J TinkerPop ava 驱动程序的包装，它添加了连接管理功能，例如端点运行状况检查和故障转移处理。它遵循与底层 TinkerPop 驱动程序相同的版本兼容性规则。

使用 3.x `neptune-gremlin-client` 版本（或最低版本 2.0.7），具体取决于您的 Neptune 版本允许的内容。这些较新的版本提高了弹性和连接处理能力。

对于使用 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 秒）。这可以防止 Kubernetes 在大约 5 分钟的时间段内在 Neptune 完成主机更换时重启 Pod。

**使用退避实现重试**

主机更换期间单个失败的请求不应使容器崩溃。在连接失败时实现带有指数退避的重试逻辑，这样替换期间的暂时错误就可以在没有干预的情况下得到解决。有关可重试异常的指导，请参阅 Nept [un](https://docs.aws.amazon.com/neptune/latest/userguide/transactions-exceptions.html) e 交易异常。