gpt4 book ai didi

ruby-on-rails - 随机慢速 Rack::MethodOverride#call on Heroku 上的 rails 应用程序

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:47 25 4
gpt4 key购买 nike

环境:

  • ruby :2.1.2

  • rails :4.1.4

  • 英雄联盟

在我们托管在 Heroku 上的 Rails 应用程序中,有时请求需要很长时间才能执行。它只有 1% 或更少的次数,但我们无法弄清楚它到底发生了什么。

我们安装了 newrelic 代理,它说它不是请求排队,是交易本身花费了所有时间来执行。

但是,事务跟踪显示:

enter image description here

(同样的请求大部分时间只需要 100 毫秒就可以执行)

据我所知,在我们的 Controller 被调用之前已经消耗了时间。它被消耗在

Rack::MethodOverride#call

这是我们无法理解的。

此外,大多数时候(或者甚至总是,我们不确定)这种情况发生在移动设备发送的 POST 请求上。这可能与连接速度慢有关吗? (尽管 POST-payload 非常小)。

有人遇到过吗?任何关于如何继续探索这个问题的建议都将受到赞赏。

提前致谢!

最佳答案

自从 Ruby 代理开始在版本 3.9.0.229 中检测中间件以来,我们已经看到一些用户出现了这个问题。时间较长的一个可能原因是 Rack::MethodOverride 需要检查 POST 上的请求主体以确定 POST 参数是否包含方法覆盖。它调用Rack::Request#POST ,最终会触发读取 reads in the entire request body .

这可能就是您看到在此中间件上花费的时间比预期多的原因。更深入地研究 POST 主体与中间件花费的时间之间的关系可能是一个富有成效的调查途径。

关于ruby-on-rails - 随机慢速 Rack::MethodOverride#call on Heroku 上的 rails 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24639701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com