Какое дополнительное время для загрузки веб-страницы в рельсы? - PullRequest
1 голос
/ 27 сентября 2011

Я получил страницу, которая генерируется за несколько миллисекунд.

Завершено 200 OK за 83 мс (Просмотров: 75,9 мс)

Когда я пытаюсь загрузить эту страницу с "time wget http://localhost:3000/search",, я бы сказал, что этозанимает 1,5 секунды.

real    0m1.562s
user    0m0.001s
sys     0m0.003s

В нем нет времени выполнения js, поскольку оно не загружено в браузер. Так для чего же дополнительное время? Существуют ли какие-либо инструменты, которые могут вычислить детали стоимости времени в рельсах?? Спасибо.

1 Ответ

2 голосов
/ 27 сентября 2011

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

Еще одна вещь, на которую стоит обратить внимание, это используемый сервер Rack.WEBrick работает как чемпион, но мучительно медленно;Thin и Unicorn значительно быстрее обрабатывают запросы.Я хотел бы рассмотреть возможность использования промежуточного программного обеспечения Rack или Rails Metal, если вам нужно оптимизировать действие по скорости.

На уровне TCP поиск DNS localhost-> 127.0.0.1 займет некоторое небольшое время.Кроме того, wget должен установить новый сокет для приложения.Ничто из этого не может быть измерено самим приложением.

Для чего стоит тот же эксперимент с приложением Rails 2.3.12, работающим на Unicorn 4.0.1, попавшим на страницу входа:

Завершено за 16 мс (DB: 4) |302 Найдено [http://localhost/]

real        0m0.407s
user        0m0.000s
sys         0m0.010s

Обновление от 28.09.2011:

Копирование на уровне HTTP, curl поддерживает отслеживание запроса URL с выходными данными метки времени:

curl --trace-ascii trace.log --trace-time http://localhost:3000

Чтобы копать немного дальше и видеть фактические вызовы, попробуйте использовать straceс включенным режимом хронометража:

strace -T curl http://localhost:3000

Пример выходных данных для обоих из них доступен в виде gist .

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