Performance HTTPS连接保持活动性能

Performance HTTPS连接保持活动性能,performance,http,keep-alive,Performance,Http,Keep Alive,有人知道允许使用keep alive的HTTPS请求与不允许使用keep alive的HTTPS请求的总时间之间的差异(以毫秒和百分比为单位)吗?为了解决这个问题,我们假设一个web服务器有一个名为/time的GET端点,该端点只返回服务器的本地时间,并且客户端平均每分钟调用一次该端点 我的猜测是,把服务器放在我的家庭局域网上,从我的笔记本电脑在局域网上打电话/打电话需要200毫秒。“保持活力”可能需要150毫秒。这就是50毫秒的差距,25%的改善 我的第二个问题类似,但只考虑服务器处理时间。假

有人知道允许使用keep alive的HTTPS请求与不允许使用keep alive的HTTPS请求的总时间之间的差异(以毫秒和百分比为单位)吗?为了解决这个问题,我们假设一个web服务器有一个名为/time的GET端点,该端点只返回服务器的本地时间,并且客户端平均每分钟调用一次该端点

我的猜测是,把服务器放在我的家庭局域网上,从我的笔记本电脑在局域网上打电话/打电话需要200毫秒。“保持活力”可能需要150毫秒。这就是50毫秒的差距,25%的改善


我的第二个问题类似,但只考虑服务器处理时间。假设服务器处理GET/time请求需要100毫秒,但使用keep-alive只需要50毫秒。这快了50毫秒,但性能提高了50%,这非常有意义,因为它增加了服务器的容量。

我认为您在这里混淆了很多东西。HTTP协议中的Keepalive头表示服务器不介意通过同一连接接受多个请求的客户端

连接是一个与底层TCP协议相关的术语,在建立连接时存在开销(三方握手)。另一方面,一次连接过多会影响服务器的性能。这就是为什么存在这些选择

HTTP
S
在HTTP协议之上暗示了与安全相关的工作流,我怀疑它与您的问题没有任何关联


因此,如果你每分钟谈论一个请求,没有任何明显的区别。建立连接的开销大约为Doezen毫秒,因此您会注意到从每秒数百个请求开始的差异。

这是我的实验。它不是HTTP,但它很好地说明了保持连接活动的好处

我的设置是一个服务器网络,它创建自己的安全连接。 我编写了一个压力测试,在Server1上创建了100个线程。每个线程打开一个TCP连接,并与Server2建立一个安全通道。server2上的线程发送数字1..1000,Server1上的线程只是读取它们,然后向server2发送“OK”。TCP连接和安全通道“保持活动”

第一次跑步:

  • 服务器1上创建了100个线程
  • 服务器1和服务器2之间建立了100个TCP连接
  • 在Server2上创建了100个线程(用于服务Server1请求)
  • 建立100个安全通道,每个线程一个
总运行时间:10秒

第二次运行:

  • 在Server1上创建了100个线程(但这些线程可能在以前的运行中被JVM重用)
  • 不需要新的TCP连接。旧的可以重复使用
  • 服务器2上未创建任何线程。他们仍在等待请求
  • 没有建立安全通道

总运行时间:1秒

谢谢wick。我的理解是http保持活动将允许客户端(比如浏览器)重用TCP连接,而不是每次请求时都建立一个连接。由于HTTPS是通过TCP建立的,因此使用keep alive可以保存TCP握手和TLS握手。正确。然而,这并没有改变答案。TLS握手并不“慢”,只是CPU密集型。嗨,维克,我刚刚发布了一个实验,展示了保持连接活跃的好处。10倍加速。这是在我自己的网络中,不使用HTTP,因此显然是另一种设置,但我很高兴我添加了此功能以保持连接的活力。