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

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

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

Ответы [ 4 ]

159 голосов
/ 09 апреля 2010
  • Если ваше приложение какое-то время не используется, оно выгружается (из памяти сервера).
  • При первом попадании он загружается и остается загруженным, пока не пройдет какое-то время, и никто не будет к нему обращаться.

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

Официальное примечание об этом.

14 голосов
/ 31 мая 2010

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

Например, если у вас есть неизменная домашняя страница, вы можете кэшировать ее в течение длительных периодов в Varnish, добавляя заголовки Cache-Control к ответу. Тогда ваши пользователи не будут испытывать удар нагрузки, пока они не захотят «что-то сделать», а не когда они придут.

3 голосов
/ 23 апреля 2014

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

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

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

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

3 голосов
/ 05 октября 2010

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

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

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

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

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