Ssl HTTP2,NginX,但仍为高TTFB

Ssl HTTP2,NginX,但仍为高TTFB,ssl,nginx,http2,Ssl,Nginx,Http2,无论我们做了什么改变,TTFB都很高! 令人惊讶的是,服务器端的家伙坚持认为一切都设置正确,服务器运行速度足够快,但报告根本没有改变! 经过这么多的优化,我不敢相信它没有改变,我开始怀疑TLS、gZIP和重定向。。。 我遗漏了什么吗?页面本身似乎需要大约一秒钟的时间才能生成。这里是一个curl输出(),请注意time\u appconnect $ curl -w "@curl_format.txt" -so /dev/null https://jimmydance.com/ time_n

无论我们做了什么改变,TTFB都很高! 令人惊讶的是,服务器端的家伙坚持认为一切都设置正确,服务器运行速度足够快,但报告根本没有改变! 经过这么多的优化,我不敢相信它没有改变,我开始怀疑TLS、gZIP和重定向。。。
我遗漏了什么吗?

页面本身似乎需要大约一秒钟的时间才能生成。这里是一个curl输出(),请注意
time\u appconnect

$ curl -w "@curl_format.txt" -so /dev/null https://jimmydance.com/
    time_namelookup:  0.004
       time_connect:  0.217
    time_appconnect:  0.921
   time_pretransfer:  0.921
      time_redirect:  0.000
 time_starttransfer:  1.348
                    ----------
         time_total:  1.352

这表明瓶颈是生成页面的应用程序。查看页面本身,不会花费太长时间,我会查看您正在使用的框架或分配给服务器的资源。

使用@frederik deweerdt的答案和

  • 您的服务器在进行TLS握手时花费了将近1秒的时间(
    time\u appconnect:0.921
  • TTFB
    time\u startttransfer-time\u appconnect(1.348-0.921=0.427)
  • 服务器生成html所花费的时间
    TTFB-(time\u connect-time\u namelookup)(0.427-(0.217-0.004))=0.214
所以我想说,瓶颈不是应用程序,而是服务器的TLS协商速度慢以及网络中的一些延迟

在这里可以很好地解释这些旋度计时图:

下图显示了针对典型的HTTP over TLS 1.2连接(TLS 1.3设置需要少一次往返)的每一个计时所指的内容:

  • 时间\u namelookup在本例中需要很长时间。要从图中排除DNS解析器性能,可以解析cURL的IP:--resolve www.zasag.mn:443:218.100.84.167。也值得寻找一个更快的解析器:)
  • time\u connect是从客户端的角度来看的TCP三方握手。它在客户端发送ACK后结束-它不包括ACK到达服务器所需的时间。它应该接近到服务器的往返时间(RTT)。在本例中,RTT看起来约为200 ms
  • 时间\u appconnect这里是TLS设置。然后,客户机准备发送其HTTP GET请求
  • 时间\u startttransfer就在cURL从网络读取第一个字节之前(它还没有真正读取它)
    time\u startttransfer-time\u appconnect
    实际上与来自该客户端的第一个字节的时间(TTFB)相同,在本例中为250毫秒。这包括网络上的往返,因此您可以通过计算TTFB-(
    time\u connect-time\u namelookup
    )更好地猜测服务器在请求上花费了多长时间,因此在这种情况下,服务器只花了几毫秒响应,其余时间是网络。 总时间是客户端发送FIN连接断开后的时间