【发布时间】:2014-07-09 20:42:27
【问题描述】:
这个问题涉及性能和优化问题,以及实现 Sidekiq 作业的方式。
假设我们有以下工作流程
默认执行
# Step 1 do_things_with_activerecord_db_and_get_some_parameters() # Step 2 step2_perform_an_http_request_with_these_parameters_on_unreliable_server()结束
在以下情况下,ActiveRecord 连接在步骤 1 中从池中取出,只有在 SideKiq 的 ActiveRecord 中间件完成(或失败)作业后才会由 SideKiq 释放。
由于我们在第2步请求的外部http服务器不可靠,http请求可能需要很长时间甚至超时,因此ActiveRecord连接一直被锁定,对吧?
所以我的问题是:调用是否相关、有用且安全:
ActiveRecord::Base.clear_active_connections!
在步骤 1 和步骤 2 之间,以便作业自行释放资源并使其可用于其他类似作业?还是我错过了一些关于连接池的东西?这种方法也可以应用于redis连接吗?
提前致谢!
【问题讨论】:
标签: ruby-on-rails ruby activerecord connection sidekiq