【问题标题】:Why is request_time much larger than upstream_response_time in nginx access.log?为什么nginx access.log中的request_time比upstream_response_time大很多?
【发布时间】:2016-09-22 16:37:38
【问题描述】:

我正在尝试提高网络应用的性能。分析应用程序本身,我发现它的响应时间是可以接受的(100ms-200ms),但是当我使用 ApacheBench 测试应用程序时,响应时间有时会超过 1 秒。当我仔细查看日志时,我发现 request_timeupstream_response_time 之间偶尔会有很大的差异:

"GET /wsq/p/12 HTTP/1.0" 200 114081 "-" "ApacheBench/2.3" 0.940 0.286
"GET /wsq/p/31 HTTP/1.0" 200 114081 "-" "ApacheBench/2.3" 0.200 0.086

upstream_response_time 与我在网络应用程序中的分析非常接近,但 request_time 对于第一个请求接近一秒。

什么可能导致这种差异?

我了解request_time 是从收到的第一个字节到发送的最后一个响应字节记录的,可能会受到网络状况和客户端问题的影响。我想知道我应该怎么做才能尽可能减少平均request_time

【问题讨论】:

  • 我正在寻找的是一些 Nginx 参数调整以减少 request_time?
  • 嗨@NeoWang,我也面临类似的问题。你能查明问题的根源吗?

标签: networking nginx latency


【解决方案1】:

较高的request_time 可能是由于客户端连接速度较慢,您对此无能为力。因此,较高的request_time不一定代表您的服务器和/或应用程序的性能。

你真的不应该在分析时在request_time上花费太多时间,而应该测量应用程序的响应时间(即upstream_response_time)。

也就是说,您可以做一些事情,并且可能会影响request_time。其中一些如下:

  • 在高速网络上移动您的服务器
  • 将服务器移到客户端附近
  • 禁用Nagle's algorithm
  • 调整服务器的 TCP 堆栈(请参阅this article)。然而,这些并不一定会有很大的不同,因为内核可以很好地为您调整它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 2021-01-08
    • 1970-01-01
    • 2021-04-05
    • 2021-06-21
    • 1970-01-01
    相关资源
    最近更新 更多