Почему время рендеринга моего сервера Rails не складывается?

У меня проблемы с тем, что мое приложение Rails очень медленно работает на моем промежуточном сервере. Что больше всего сбивает с толку, так это то, что последняя строка журнала для каждого запроса.

Кажется, что время просмотра и базы данных даже близко не ко всему времени рендеринга. На одной странице это так же плохо, как ~ 1000 мс для завершения, ~ 450 мс для представления и ~ 20 мс для базы данных.

Откуда берется остальное время, необходимое для рендеринга страницы?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
1 390
6

Ответы 6

Рекомендую использовать Сервис RPM New Relic. У него есть бесплатная версия, но услуга Bronze (40 долларов в месяц) прекрасна и помогает отслеживать эти проблемы.

это не ответ на вопрос, а просто сутенерство в обслуживании - как это лучший ответ или вообще ответ?

eyberg 21.09.2010 21:51

Это может помочь понять, почему его действия медленные, и это его настоящий вопрос. В любом случае, способ прокомментировать комментарий 18-месячной давности: |

Matt Darby 05.10.2010 22:08

Когда что-то загадочно ... профайлеры - ваш друг!

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

рубин-проф делает для меня трюк, когда я нахожусь в RubyLand, и он создает красивый график вызовов (в формате html, если хотите), что позволяет легко и легко увидеть, какие методы замедляют ваш запрос.

Я как раз собирался вернуться к этому вопросу с тем же ответом, так что я просто возьмусь за него. Вот очень маленький ruby-prof фрагмент от рендеринга одного вида. Удивительно, как много всего творится под капотом.

Помимо времени рендеринга и базы данных, некоторое время тратится на код вашего контроллера и фреймворк Rails. Это может быть очень медленным, если вашему промежуточному серверу назначено слишком мало ресурсов. Однако не следует, что длительность в журнале не всегда идеальна, особенно продолжительность базы данных.

Что говорит ваш журнал apache? На нем обязательно будут разные числа, чтобы показать время, необходимое для обслуживания запроса.

Apache отправляет запросы на рельсы, и рельсы работают на нем, и это то, что вы видите в своих производственных журналах.

Весь HTML по-прежнему должен отображаться в вашем браузере (тяжелый CSS, изображения, js и т. д.). Попробуйте использовать расширение httpwatch для Firefox, чтобы узнать время рендеринга элементов пользовательского интерфейса, и оно должно увеличиться.

Как предлагалось ранее, NewRelic должен дать вам приличное время, потраченное на различные виды деятельности (M V C)

Я обнаружил, что большую часть времени рендеринга можно потратить на создание и подготовку объектов Active Record в Rails. После запроса и перед просмотром. Например, в зависимости от того, сколько записей возвращается в результате «находки».

Другие вопросы по теме