繁体   English   中英

当nginx用作代理时,为什么Rails中间件开销如此之高?

[英]Why is Rails middleware overhead so high when nginx is used as a proxy?

感谢Godfrey Chan对我迄今为止所获得的有益见解。 他向我指出,与报告的日志时间相比,有一个Rack中间件可以为我提供关于响应中X-Runtime HTTP头中整个Rails请求的更准确的时间安排(在XXXms完成... )。

这是我从测试中得到的:

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

  • X-Runtime:25ms
  • Chrome“等待”时间:27ms
  • Rails日志格式的报告时间:7ms完成200 OK(浏览次数:0.9ms |续集:3.0ms)

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

  • X-Runtime:84ms
  • Chrome“等待”时间:88毫秒
  • 在7ms完成200 OK(浏览次数:0.8ms |续集:2.9ms)

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

  • X-Runtime:105ms(有时高达400ms)
  • 在88ms完成200 OK(浏览次数:2.0ms |续集:5.5ms)

当我尝试很多次时,这些时间非常一致。

任何想法为什么Rails需要更长的时间才能通过nginx proxy_pass提供相同的请求? 据我所知,Curl无法利用keep-alive等功能,但我相信nginx能够充分利用它。 但无论如何,X-Runtime标头不应该考虑打开连接的时间,对吧?

我不能再重现这个问题了,所以不要介意研究它,除非你自己重现它并提供更多细节来调查它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM