Вопрос по Ruby on Rails - как я могу измерить время отклика с момента первого запроса приложения? (например, используя «эталон») - PullRequest
0 голосов
/ 16 декабря 2009

Справочная информация. Я передаю файлы (текст, изображения) в браузер через приложение Rails, так как пользователь должен пройти аутентификацию. Файлы находятся в файловой системе, однако ссылки находятся в базе данных, так как я использую PAPERCLIP. Использование AUTHLOGIC для аутентификации. Я считаю, что время отклика довольно плохое, так как каждый запрос на HTML / изображение и т. Д. Должен проходить через слои Rails, я предполагаю, что AUTHLOGIC, PAPERCLIP затем возвращаются обратно.

Q1 - Как я могу получить контрольные результаты, которые начинаются сразу с первой точки, когда HTTP-запрос попадает в приложение rails, до того момента, когда он готов начать потоковую передачу запроса (т. Е. Чтобы избежать изменений сетевого трафика)?

Я использую «тест» в моем контроллере, но я почти уверен, что мне не хватает других задержек, таких как: аутентификация через AuthLogic и т. Д. Например, я примерно делаю

  def find
    self.class.benchmark("BENCHMARK REPORT") do
      search_path = params[:path] * "/"
      webfile = Webfile.find_by_path( search_path )
      if webfile
        send_file webfile.file.path , :type => webfile.file_content_type, :disposition => 'inline'
      else
        render :text => "COULD NOT FIND YOUR FILE WITH PATH = #{params [:path]}"
      end
    end
  end

Q2 - Учитывая, что я хочу, чтобы пользователи проходили аутентификацию для HTML и связанных с ним файлов (CSS, изображения), а затем для нужд страницы, есть ли какой-нибудь очевидный способ добиться улучшения на порядок? Полагаю, я мог бы сохранить в Сеанс состояния Список дочерних файлов, в которых нуждается HTML-страница, и получение пути к файлу до тех пор, пока не поступят последующие запросы, и это может привести к поиску в базе данных (за счет использования состояния сеанса)?

спасибо

1 Ответ

1 голос
/ 16 декабря 2009

Есть много способов сделать это. Один хороший вариант - это установить в ваше приложение плагин New Relic , который выполняет такой мониторинг производительности. Вам нужно заплатить, чтобы использовать его в производстве, но его можно использовать локально для тестирования производительности и профилирования.

Есть несколько других компаний, предлагающих подобные продукты, хотя я лично ими не пользовался.

Также rails теперь поставляется с некоторыми скриптами для тестирования и профилирования. Проверьте сценарии в script/performance

...