为什么 NEST 包含 TCP keep alive?
Why does NEST include TCP keep alive?
我注意到 NEST 可以设置 TCP keep alive。
这是要解决什么问题?
我觉得http keep alive应该够用了,这是NEST内部连接池默认实现的?
谁能阐明这里的差异,以及我们应该使用什么场景。
谢谢
不是 Nest 开发人员,但我 运行 是 managed Elasticsearch service。虽然“保持活动”听起来很有价值,但它对于 HTTP 连接比 TCP 连接更有价值。
Typically TCP Keepalives are sent every 45 or 60 seconds on an idle TCP connection, and the connection is dropped after 3 sequential ACKs are missed.
这听起来很方便,但如果您进行一些测量,建立 TCP 连接在同一个数据中心内可能只需亚毫秒。
鉴于我们正在研究 Elasticsearch activity,我们现在处于 HTTP 领域。并且 HTTP 连接可能会产生更多的开销。特别是在这个安全连接的时代,交换 TLS 证书的握手可以是几个数据包,大约需要 ~50ms。
因此,虽然 TCP keepalive 每分钟可以为您节省一毫秒,但 HTTP keepalive 可以为每个请求节省数十毫秒 。 对于每分钟生成多个 HTTP 请求的应用程序, HTTP keep-alive 可以节省聚合时间。
另一方面,TCP keepalive 可以忽略不计。
另请参阅:
那么为什么 Nest 包含打开 TCP keep-alive 的选项?对于 Nest 开发人员来说,也许这是一个更好的问题。作为工程师同行,有时最好为所有可配置的可能性包含一个选项,即使只是为了完整性。
我注意到 NEST 可以设置 TCP keep alive。
这是要解决什么问题?
我觉得http keep alive应该够用了,这是NEST内部连接池默认实现的?
谁能阐明这里的差异,以及我们应该使用什么场景。
谢谢
不是 Nest 开发人员,但我 运行 是 managed Elasticsearch service。虽然“保持活动”听起来很有价值,但它对于 HTTP 连接比 TCP 连接更有价值。
Typically TCP Keepalives are sent every 45 or 60 seconds on an idle TCP connection, and the connection is dropped after 3 sequential ACKs are missed.
这听起来很方便,但如果您进行一些测量,建立 TCP 连接在同一个数据中心内可能只需亚毫秒。
鉴于我们正在研究 Elasticsearch activity,我们现在处于 HTTP 领域。并且 HTTP 连接可能会产生更多的开销。特别是在这个安全连接的时代,交换 TLS 证书的握手可以是几个数据包,大约需要 ~50ms。
因此,虽然 TCP keepalive 每分钟可以为您节省一毫秒,但 HTTP keepalive 可以为每个请求节省数十毫秒 。 对于每分钟生成多个 HTTP 请求的应用程序, HTTP keep-alive 可以节省聚合时间。
另一方面,TCP keepalive 可以忽略不计。
另请参阅:
那么为什么 Nest 包含打开 TCP keep-alive 的选项?对于 Nest 开发人员来说,也许这是一个更好的问题。作为工程师同行,有时最好为所有可配置的可能性包含一个选项,即使只是为了完整性。