4

感谢 Godfrey Chan 到目前为止我从他那里得到的有益见解。他指出,与日志中报告的时间相比,有一个 Rack 中间件可以在响应中的 X-Runtime HTTP 标头中为我提供有关整个 Rails 请求的更准确时间(完成时间为 XXXms... )。

这是我从测试中得到的:

1 - 在 Chrome 中访问 Rails 操作的直接 URL:

  • X-运行时间:25ms
  • Chrome“等待”时间:27ms
  • Rails 日志格​​式报告时间:7ms 内完成 200 OK(查看:0.9ms | Sequel:3.0ms)

2 - 访问相同的 URL,但使用带有 proxy_pass 的 nginx,也在 Chrome 中:

  • X 运行时间:84 毫秒
  • Chrome“等待”时间:88ms
  • 在 7 毫秒内完成 200 次 OK(观看次数:0.8 毫秒 | 续集:2.9 毫秒)

3 - 从 Chrome 的开发者工具中复制 Curl 地址并使用 curl -I 运行它:

  • X-Runtime:105ms(有时会达到 400ms)
  • 在 88 毫秒内完成 200 次 OK(观看次数:2.0 毫秒 | 续集:5.5 毫秒)

当我多次尝试时,这些时间几乎是一致的。

如果通过 nginx proxy_pass,为什么 Rails 需要更长的时间来处理相同的请求?我知道 Curl 不能利用 keep-alive 等功能,但我相信 nginx 能够利用它。但无论如何,X-Runtime 标头不应该考虑打开连接的时间,对吧?

4

1 回答 1

0

我无法再重现此问题,因此请不要介意调查它,除非您可以自己重现它并向我们提供更多详细信息以进行调查。

于 2013-07-25T22:56:19.277 回答