我正在尝试做一个线程化的活动记录查询。它在开发中正确测试,但PG::Error (FATAL: sorry, too many clients already)
在生产中给我一个错误。对于开发和生产,我的池大小完全相同。这是我试图在线程中运行的代码片段:
threads = []
acs.each do |a|
threads << Thread.new do
activity = Hash.new
ActiveRecord::Base.connection_pool.with_connection do
whouser = User.find(a.whoid)
target = User.find(a.targetid) if !(a.targetid.blank?)
activity["user_name"] = whouser.user_name
activity["user_id"] = whouser.id
activity["f_uid"] = whouser.f_uid
....
end
end
end
threads.each { |t| t.join }
对此的任何见解都会令人惊叹!
PS我正在我的开发计算机上测试生产和开发,但将其作为生产运行。它在我的实际生产服务器上也有同样的问题。