Как определить, что тормозит мое приложение на Rails - PullRequest
3 голосов
/ 12 июля 2011

Приложение My Rails прекрасно работает в режиме разработки (без кэширования), но в производственной среде сложно загрузить представление: show для основной модели. Журнал показывает только SQL-запросы, которые в сумме составляют около 45 мс, но фактическое время рендеринга составляет около 15 секунд. Я использую act_as_ferret и Paperclip, но Paperclip только вызывает цикл after_save без каких-либо действий. В данный момент в сети всего 1 или 2 пользователя, поэтому я не думаю, что у меня есть резервная очередь, но я действительно не могу сузить то, что перегружает сайт. Что я могу сделать, чтобы более точно измерить функции на стороне сервера и посмотреть, что резервирует время загрузки?

Вещи, вызываемые в: show view

  • около 12 списков HABTM (типы тегов, категорий и т. Д.)
  • Похожее видео найдено с act_as_ferret
  • HABTM комментариев к видео

И это действительно так. И как мне назвать HABTM лучшей практикой Rails? Прямо сейчас я делаю что-то вроде:

<%= @video.tags.map {|t| link_to t.name, path} %>
<%= @video.categories.map {|c| link_to c.name, path} %>
#etc....

Я почти уверен, что есть лучший способ сделать это, и я открыт для предложения

Ответы [ 2 ]

3 голосов
/ 12 июля 2011

Вот несколько инструментов для выявления узких мест:

  1. http://newrelic.com/ будет анализировать такие вещи, как время запроса базы данных и время выполнения ruby ​​на стороне сервера

  2. http://developer.yahoo.com/yslow/ будет анализировать такие вещи, как время отклика, время рендеринга и JavaScript на стороне клиента

Не так много заданного кода для запуска, но есть несколько вещей, которые обычно помогают в rails find или where:

  1. используйте :includes для уменьшения количества запросов.
  2. используйте :select вместо выбора всех столбцов

Отличные ссылки по теме:
http://snippets.dzone.com/posts/show/2089
http://www.fortytwo.gr/blog/18/9-Essential-Rails-Tips
http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/

0 голосов
/ 12 июля 2011

Проверьте машину

Возможно, другие проблемы, работающие на этой машине, являются проблемой.Вы пробовали профилировать машину - например, запустить top, чтобы проверить загрузку процессора?

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