【发布时间】:2014-11-15 03:19:02
【问题描述】:
我有问题。我有几个代码块必须并行和独立工作,但可以有一些连接点,如线程安全队列。我没有使用rails,那只是一个ruby脚本。但我正在使用活动记录。当我在主 ruby 线程中调用 activerecord 模型时,一切正常,选择大约需要 0.3 毫秒。但是,如果我在创建的线程中调用 activerecord 模型,例如:
Thread.new do
3.times {
SomeModel.find(3)
}
end
现在需要 400 毫秒。为什么会发生这种情况以及该怎么做才能缩短请求执行时间?
【问题讨论】:
-
ActiveRecord 连接池可能太小。 ActiveRecord 默认池大小为 5。如果打开的连接不可用,ActiveRecord 将阻塞等待连接。尝试通过在连接参数中指定 pool: 选项来增加池大小。
-
您使用的是哪个 AR 版本?
-
ActiveRecord 版本是 4.1.6。这不是池问题,因为我已经将池设置为 100。并且只发出 3 个请求。
标签: ruby multithreading activerecord