Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 解释机架超时服务时间_Ruby On Rails_Heroku_Timeout_Rack - Fatal编程技术网

Ruby on rails 解释机架超时服务时间

Ruby on rails 解释机架超时服务时间,ruby-on-rails,heroku,timeout,rack,Ruby On Rails,Heroku,Timeout,Rack,在Rails应用程序中,我使用机架超时设置超时请求,超时时间超过30秒 奇怪的是,在某些情况下,机架超时进入得非常晚,请求的总服务时间可能会长达7-30分钟 下面是3个例子来说明这种奇怪的情况: 这是我的中间件堆栈: use Raven::Rack use HireFire::Middleware use ActionDispatch::SSL use Rack::Sendfile use HeaderDelete use ActionDispatch::Static use #<Ac

在Rails应用程序中,我使用
机架超时
设置超时请求,超时时间超过30秒

奇怪的是,在某些情况下,
机架超时
进入得非常晚,请求的总服务时间可能会长达7-30分钟

下面是3个例子来说明这种奇怪的情况:

这是我的中间件堆栈:

use Raven::Rack
use HireFire::Middleware
use ActionDispatch::SSL
use Rack::Sendfile
use HeaderDelete
use ActionDispatch::Static
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x0000000002d643e8>
use Rack::Timeout
use Rack::Runtime
use Rack::MethodOverride
use ActionDispatch::RequestId
use LoggingMiddleware
use Rails::Rack::Logger
use Chewy::Railtie::RequestStrategy
use ActionDispatch::ShowExceptions
use ActionDispatch::DebugExceptions
...
使用Raven::Rack
使用HireFire::中间件
使用ActionDispatch::SSL
使用Rack::Sendfile
使用headerdelet
使用ActionDispatch::Static
使用#),尽管这不能解释为什么来自
机架超时
的第一个日志(
状态=就绪
)会在Heroku路由器的H12之后27分钟出现(上面的示例1和3)

机架超时
服务超时设置为30秒(与Heroku路由器相同)会有问题吗


谢谢你的建议

旁注:Rails使用数据库连接池。使用Rails中间件之一签出并释放连接。如果使用
Rack::Timeout
中间件终止线程,则数据库连接可能会泄漏(丢失),因为它从未返回到池中。这将导致您的应用程序在ActionCable等待连接时停止,即使池是空的,并且(可能)尝试从泄漏中恢复。这可能是因为您的服务器在应用程序服务器的缓存中有大量积压的请求(puma?乘客?碘?您运行的是哪台服务器?)-这可能会导致在将请求转发到应用程序之前发生H12超时。