使用 AWS 网络负载均衡器配置 TCP keepalive

AWS 支持三种类型的弹性负载均衡器 (ELB):

经典负载均衡器

应用程序负载均衡器

网络负载均衡器

Vertica 强烈推荐使用 AWS 网络负载均衡器 (NLB),它可以为您的 Vertica 数据库提供最佳性能。网络负载均衡器充当客户端(例如 JDBC)和 Vertica 服务器之间的代理。经典负载均衡器和应用程序负载均衡器在企业模式或 Eon 模式下不适用于 Vertica。

为避免在通过 NLB 连接到 Vertica 时出现超时和挂起,请务必了解 AWS NLB 如何处理连接的空闲超时。对于 NLB,AWS 将空闲超时值设置为 350 秒,您无法更改此值。超时适用于两个连接点。

对于长时间运行的查询,如果客户端或服务器一方未能发送适时的 keepalive,则连接的那一方将被终止。这可能会导致 JDBC 客户端挂起并等待永远不会返回的结果,因为服务器未能在 350 秒内发送 keepalive。

要识别空闲超时/keepalive 问题,请通过 JDBC 等客户端运行如下查询:

=> SELECT SLEEP(355);

如果出现问题,则会发生以下情况之一:

  • 客户端连接在 355 秒之前终止。在这种情况下,请降低 JDBC keepalive 设置,以便 keepalive 的发送间隔小于 350 秒。

  • 客户端连接在 355 秒后不返回结果。在这种情况下,您需要调整服务器 keepalive 设置(tcp_keepalive_time 和 tcp_keepalive_intvl),以便 keepalive 的发送间隔小于 350 秒。

有关 AWS 网络负载均衡器的详细信息,请参阅 AWS 文档中的什么是网络负载均衡器?