Количество запросов Mongoid / Rails по запросу

#ruby-on-rails #mongodb #mongoid

#ruby-on-rails #mongodb #mongoid

Вопрос:

У нас есть производственное приложение, и мы обнаружили, что нашим самым большим узким местом являются запросы к БД. Трудно точно отследить, что делают пользователи, чтобы выяснить, каковы запросы реального мира. Мы рассматриваем возможность создания трекера для каждого запроса. Поддерживает ли Mongoid или Rails отслеживание количества запросов по запросу? Мы хотим что-то вроде в разработке, где вы можете видеть, как все запросы пролетают, но по запросу. Мы реализуем это примерно так:

application_controller:

 before_action :log_request_start
after_action :log_request_end

def log_request_start
    request_log = RequestLog.new  # make a new model to 
    request_log.id = Thread.id # use thread?
    request_log.params = request.whatever # harvest some params from the Rails request


def log_request_end
    request_log = Request.find_by(thread_id: Thread.id) #  look it up
    request.total_queries = # can we get the number of mongo queries that fired in this request?
  

Спасибо за любую помощь,
Кевин

Комментарии:

1. docs.mongodb.com/ruby-driver/current/tutorials/…

2. спасибо, но это не разрешает атрибуцию для каждого потока или для каждого запроса rails, поэтому невозможно узнать, какой запрос поступил из запроса x, а какой из запроса y

3. Вы можете просмотреть jira.mongodb.org/browse/MONGOID-4631 . Если вы найдете в Rails механизм для создания отчетов / регистрации количества запросов, вы можете создать тикет Mongoid, запрашивающий интеграцию с этим механизмом.

4. Вы пытались проверить, доступна ли эта функция в профилировщике базы данных mongo? docs.mongodb.com/manual/tutorial/manage-the-database-profiler