1

我一直在使用并发红宝石 1.1.5 与 Rails 5.1.6 和 MySQL 8.0。我必须进行 500 次数据库调用,所以我尝试使用并发 ruby​​ 进行调用,但结果比预期的要慢得多

正常循环调用 - 这平均需要 7-8 秒

[1..500].map do
  ## Db Call
end

更改代码并使用并发 ruby​​ 后,此时间增加到 12-13 秒

thread_pool = Concurrent::FixedThreadPool.new(10)
promises = []
[1..500].map do
  Concurrent::Promises.future({ executor: thread_pool }) do
    Rails.application.executor.wrap do
      ActiveRecord::Base.connection_pool.with_connection do
        ## Db Call
      end
    end
  end
end

无法调试导致并发请求变慢的可能原因。我错过了什么吗?

4

0 回答 0