我有问题。我有几个代码块,必须并行和独立工作,但可以有一些连接点,如线程安全队列。我没有使用rails,这只是一个ruby脚本。但我使用的是activerecord。当我在主ruby线程中调用一个activerecord模型时,它就可以了,选择大约需要0.3毫秒。但是如果我在一个创建的线程中调用一个activerecord模型,就像:
Thread.new do
3.times {
SomeModel.find(3)
}
end
现在需要400毫秒。为什么会发生这种情况以及做什么,以降低请求执行时间?
答案 0 :(得分:1)
我发现这是ActiveRecord从主线程获得连接,在那里它建立了连接。在每个线程中重新建立连接就可以了。另一种方法是覆盖activerecord中的current_connection方法以共享线程之间的连接。