Не могу понять, что является причиной моего узкого места в производительности в моем приложении rails - PullRequest
2 голосов
/ 22 декабря 2011

Мое приложение rails, согласно моим журналам heroku, обслуживает запросы в среднем приблизительно от 1700 до 2500 миллисекунд (это весь обход). Я использовал новую реликвию для профилирования своего приложения, и кажется, что большая часть запроса не выполняется в моей базе данных, а скорее в разделе «Веб-транзакция» в New Relic. Кажется, что категория «Контроллер» имеет тенденцию быть самой медленной среди запросов, за которой следует сегмент «SQL-SELECT» в категории «База данных».

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

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

Ответы [ 2 ]

2 голосов
/ 02 января 2012

New Relic для Ruby включает в себя бесплатный, автономный режим разработчика. При запуске в RAILS_ENV = development гем New Relic добавляет маршрут, который покажет вам подробный профиль для каждого запроса. Перейдите к http://localhost:3000/newrelic после нескольких нажатий на приложение.

Профиль включает время для каждого запроса SQL, а также для компонентов вашего кода. Вы можете использовать пользовательские инструменты , чтобы разбивать большие куски кода на более мелкие сегменты (или отдельные методы), которые рассчитываются по отдельности. Эта функция во многом похожа на следы транзакций, которые вы получаете в платной версии Pro, с одним существенным отличием в том, что вы не хотите запускать режим свободной разработки в рабочей среде.

(Полное раскрытие: я работаю на NR. Однако, мало кто знает о режиме свободной разработки, поэтому я подумал, что стоит упомянуть.)

Потенциально вы можете заставить загрузку Javascript казаться еще быстрее с помощью чего-то вроде head.js , который будет загружать ваши файлы JS асинхронно и параллельно.

0 голосов
/ 22 декабря 2011

Посмотрите на это слайд-шоу:

http://www.slideshare.net/drhenner/optimize-the-obvious-7636674

Может быть недостаточно, но оно проходит через некоторые распространенные ошибки.

Копать немного глухопосмотрите это видео: http://windycityrails.org/videos2011/#2

Это длиннее, но дает много мест для поиска.

На другой ноте.Вы используете CDN?

...