Приложение Google App Engine очень медленное
Я создал сайт Hello World в Google App Engine. Он использует Django 1.1 без какого-либо патча.
Несмотря на то, что это просто очень простая веб-страница, на это уходит много времени, а часто и время ожидания.
Любые предложения, чтобы решить эту проблему?
Примечание: он реагирует быстро после первого звонка.
8 ответов
Это ужасное предложение, но я все равно сделаю это:
Создайте небольшое клиентское приложение или просто используйте wget
с cron
периодически получать доступ к вашему приложению, возможно, каждые 5 минут или около того. Это должно помешать Google перевести его в состояние покоя.
Я говорю, что это ужасное предложение, потому что это пустая трата ресурсов и злоупотребление бесплатным сервисом Google. Я ожидаю, что вы сделаете это только во время короткого этапа тестирования / запуска.
Теперь Google добавил способ оплаты "Всегда включен", который составляет 0,30$ в день.
Используя эту функцию, вашему приложению больше не придется начинать холодный запуск.
Всегда включен
Хотя запросы на разогрев помогают гладко масштабировать ваше приложение, они не помогают, если в вашем приложении очень мало трафика. Для приложений с высоким приоритетом и низким трафиком вы можете зарезервировать экземпляры с помощью функции всегда включенного в App Engine.
Always On - это расширенная функция, которая резервирует три экземпляра вашего приложения, никогда не отключая их, даже если в приложении нет трафика. Это смягчает влияние запросов на загрузку на приложения с небольшим или переменным объемом трафика. Кроме того, если экземпляр Always On случайно умирает, App Engine автоматически перезапускает экземпляр с запросом на разогрев. В результате приложения Always On должны обязательно выполнять как можно больше инициализации во время запросов на прогрев.
Даже после включения Always On ваше приложение может столкнуться с запросами на загрузку в случае внезапного увеличения трафика.
Чтобы включить Always On, перейдите на страницу "Настройки биллинга" в консоли администратора вашего приложения и установите флажок Always On.
http://code.google.com/intl/de-DE/appengine/docs/adminconsole/instances.html
Подведем итог этой теме:
- Холодный старт занимает много времени
- Google не рекомендует пинговать приложения, чтобы держать их в тепле, но люди не знают альтернативы
- Есть проблема, поданная, чтобы заплатить за теплый экземпляр (Java)
- Существует проблема, поданная для Python. Помимо всего прочего, файлы.py предварительно не скомпилированы.
- Некоторые приложения несоразмерно затронуты (не могу найти ссылку или проблему в группах Google)
- Мартовская ветка 2009 года про Python говорит <1s (!)
Я вижу меньше разговоров о Python по этому вопросу.
Еще один совет, который может увеличить время отклика.
Включение биллинга действительно увеличивает квоты и, по моему личному опыту, также увеличивает общий отклик приложения. Вероятно, из-за более высокого приоритета для приложений с поддержкой биллинга Google имеет. Например, приложение с отключенным биллингом может отправлять до 5-10 электронных писем / запрос, приложение с включенным биллингом легко справляется с 200 электронными письмами / запросом.
Просто убедитесь, что установлены низкие уровни выставления счетов - вы никогда не узнаете, когда Slashdot, Digg или HackerNews заметят ваш сайт:)
Если он отвечает быстро после первого запроса, возможно, это всего лишь случай запуска и запуска соответствующего процесса. По общему признанию это немного удивительно, что это занимает так много времени, что это истекает. Это происходит после того, как вы обновили приложение и убедились, что панель мониторинга AppEngine показывает, что оно готово?
"Медленный первый удар" довольно распространен во многих веб-фреймворках. Это немного больно во время разработки, но не проблема для производства.
Я использовал pingdom по понятным причинам - никакой холодный старт не является бонусом. Конечно, клиенты скоро приедут, и это будет не проблема
Я сталкиваюсь с тем же самым с приложением на основе пилонов. Я имею исходный сервер страниц как статический, и у меня есть фиктивный вызов ajax, чтобы запустить приложение, прежде чем пользователь введет учетные данные. Обычно этого достаточно, чтобы избежать длинного ответа... Просто идея, которую вы могли бы использовать, прежде чем у вас действительно будет миллион пользователей;).
Вы можете попробовать CloudUp. Он периодически проверяет ваши приложения Google, чтобы они оставались активными. Это бесплатно, и вы можете добавить столько приложений, сколько захотите. Также поддерживает лазурь и героку.