ruby-on-rails – 随机慢Rack :: MethodOverride#调用在Heroku的
发布时间:2020-12-16 19:38:45 所属栏目:百科 来源:网络整理
导读:环境: Ruby:2.1.2 Rails:4.1.4 Heroku 在我们在Heroku上的rails应用程序中,有时候请求需要很长时间才能执行.它只是时间的1%或更少,但我们无法弄清楚它发生了什么. 我们已经安装了newrelic代理,它表示它不是请求排队的,这是交易本身需要所有的时间执行.
环境:
Ruby:2.1.2 在我们在Heroku上的rails应用程序中,有时候请求需要很长时间才能执行.它只是时间的1%或更少,但我们无法弄清楚它发生了什么. 我们已经安装了newrelic代理,它表示它不是请求排队的,这是交易本身需要所有的时间执行. 但是,事务跟踪显示: (同样的请求大部分时间只需要执行100ms) 据我所知,在调用控制器之前,时间已经消失了.它被消耗 Rack::MethodOverride#call 这就是我们不能理解的. 此外,大多数时候(甚至总是我们不确定)发生在移动设备发送的POST请求上.这可能与缓慢的连接有关吗? (尽管POST有效载荷很小). 有没有人经历过这个?任何关于如何继续探索这个问题的建议是值得赞赏的. 提前致谢! 解决方法
由于Ruby代理开始在3.9.0.229版本中测试中间件,所以我们看到一些用户出现了这个问题.更长时间的一个可能原因是Rack :: MethodOverride需要检查POST上的请求正文,以确定POST参数是否包含方法覆盖.它调用
Rack::Request#POST,最终触发了
reads in the entire request body的读取.
这可能是为什么你看到在这个中间件中花费的时间比预期的多.更深入地了解POST身体与中间件花费的时间有关,可能是一个富有成效的调查途径. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |