Почему мои основные приложения Heroku занимают две секунды для загрузки?


Я создал два очень простых приложения Heroku для тестирования службы, но часто требуется несколько секунд, чтобы загрузить страницу, когда я впервые их посещаю:

все, что я сделал, это создать простое приложение Sinatra и развернуть его. Я ничего не сделал, чтобы испортить или проверить Сервера на Heroku. Что я могу сделать, чтобы улучшить время отклика? Это очень медленно прямо сейчас, и я не уверен, с чего начать. Код для проектов на github, если это помогает.

4 92

4 ответа:

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

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

есть служебная записка об этом.

вы также можете изучить параметры кэширования, которые у вас есть на Heroku w/ Varnish и Memcached. Они сохраняются независимо от Динамо.

например, если у вас есть неизменная Домашняя страница, вы можете кэшировать ее в течение длительных периодов в лаке, добавив заголовки управления кэшем в ответ. Тогда ваши пользователи не будут испытывать удар нагрузки, пока они не захотят "что-то сделать", а не когда они прибудут.

У меня такая же проблема. Я развернул приложение Rails 3 (1.9.2) прошлой ночью, и это медленно. Я знаю, что 1.9.2/Rails 3 находится в бета-версии на Heroku, но билет поддержки сказал, что он должен быть в порядке, используя некоторые инструкции, которые они мне прислали.

Я понимаю, что первый запрос после долгого времени занимает больше всего времени. Обретать смысл. Но просто загрузка страниц, которые даже не подключаются к БД, занимающей 10 секунд, иногда довольно плоха.

в любом случае, вы можете попробовать, что я собираюсь делать. Это профиль моего приложения и посмотреть, как долго это занимает локально. Если это занимает 400 мс, то что-то не так. Но если я получаю 50 мс локально, и это все еще занимает 10 секунд на Heroku, то что-то определенно не так.

очевидно, кэширование помогает, Но вы получаете только 5 Мб бесплатно и еще раз, с одним человеком, использующим Сайт, это не должно быть так медленно.

вы должны проверить ответ Тома Робинсона на " масштабируемость: как работает Heroku?"на Quora: http://www.quora.com/Scalability/How-does-Heroku-work

Heroku делит ресурсы сервера между многими различными клиентами / приложениями. Вашему приложению выделяются блоки вычислительной мощности. Разделы продуктов в зависимости от спроса на ресурсы. Когда у вас есть популярное приложение, которое требует больше энергии, вы можете заплатить за больше "dynos" (контейнеры приложений), а затем получить больше кусок пирога в ответ.

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

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