Подтвердить что ты не робот

Rails - завершено время для запроса, значительно превышающего время просмотра и DB

У меня есть контроллер, который возвращает JSON или XML из довольно сложного реляционного запроса с некоторой логикой контроллера.

Я настроил на стороне БД, уточнив свой запрос и убедившись, что мои индексы верны для моего запроса.

В моем журнале я вижу такие элементы:

Completed in 740ms (View: 1, DB: 50)

Итак, если я правильно понимаю это означает, что представление заняло 1 секунду для рендеринга, а запрос БД - 50 мс. Все оставшееся время в контроллере? Я пробовал обойти логику контроллера и просто оставил там свой to_json и to_xml, и он так же медленный. В качестве ориентира мой средний возвращаемый набор результатов JSON составляет 168 тыс.

Существуют ли другие шаги, которые входят в Завершенные во времени? Включает ли это время до последнего байта для передачи по сети?

Обновление: Я завернул различные части моего контроллера в блок сравнения:

self.class.benchmark("Active Record Find") do
  #my query here
end

Я обнаружил, что даже если в строке журнала указано, что DB: 50 моя активная поисковая запись занимает почти все оставшееся время. Итак, теперь я смущен относительно того, что означает этот номер БД и почему эталонная строка скажет ~ 600 мс, а БД: время будет ~ 50.

Спасибо

4b9b3361

Ответ 1

Ваш номер БД - это время, фактически потраченное в базе данных, но не загружающее объекты ActiveRecord.

Итак, если вы загружаете объекты active_record 168000 ruby ​​для рендеринга, то в качестве JSON это объясняет ваши 550 мс (или более!)