одновременное выполнение ruby медленных вызовов в БД с Rails 5 - PullRequest
1 голос
/ 07 апреля 2020

Я использовал одновременный - ruby 1.1.5 с Rails 5.1.6 и MySQL 8.0. Мне нужно сделать 500 вызовов БД, поэтому я попытался сделать это с использованием одновременного ruby, но результаты были чрезвычайно медленными, чем ожидалось

Обычный вызов L oop - это занимает в среднем 7-8 секунд

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

После изменения кода и использования одновременного ruby это время увеличивается до 12-13 сек c

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

Невозможно отладить, что может быть возможной причиной, которая делает параллельные запросы медленными. Я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...