为什么NEST包括TCP保持活着?

问题描述 投票:2回答:1

我注意到NEST能够设置TCP保持活动状态。

这个试图解决的问题是什么?

我认为http keep alive应该足够了,这是默认在NEST的内部连接池中实现的吗?

有人可以说明这里的差异,以及我们应该使用的场景。

谢谢

elasticsearch nest keep-alive tcp-keepalive
1个回答
2
投票

不是Nest开发人员,但我确实运行了managed Elasticsearch service。虽然“保持活力”听起来很有价值,但对于HTTP连接而言,它比TCP连接更有价值。

Per Wikipedia

通常,TCP Keepalive在空闲TCP连接上每隔45或60秒发送一次,并且在错过3次连续ACK后连接将被丢弃。

这听起来很方便,但是如果你进行一些测量,在同一个数据中心内建立TCP连接可能是亚毫秒级。

鉴于我们正在研究Elasticsearch活动,我们现在处于HTTP领域。并且HTTP连接可能会有更多的开销。特别是在安全连接的这个时代,交换TLS证书的握手可以是几个数据包,大约需要50ms。

因此,虽然TCP keepalive每分钟可以节省一毫秒,但HTTP keepalive可以为每个请求节省数十毫秒。对于每分钟生成多个HTTP请求的应用程序,HTTP keep-alive可以在聚合中节省大量时间。

另一方面,TCP keepalive可以忽略不计。

另见:Relation between HTTP Keep Alive duration and TCP timeout duration

那么为什么Nest包含打开TCP keep-alive的选项呢?也许对于Nest开发人员来说,这是一个更好的问题。作为一名工程师,有时候为所有可配置的可能性包含一个选项是很好的,只是为了完整性。

© www.soinside.com 2019 - 2024. All rights reserved.