AppEngine запускает новые экземпляры без необходимости в них

#java #google-app-engine

#java #google-app-engine

Вопрос:

Я являюсь подписчиком опции «Всегда включен» в Google AppEngine. Я не понимаю, почему GAE должен запускать новые экземпляры, когда уже есть экземпляры «Always On», которые включены и которые не имеют большое количество запросов в это время.

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

Комментарии:

1. Я думаю, что этот вопрос относится к их списку рассылки: groups.google.com/forum /#!форум/google-appengine

Ответ №1:

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

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

Я могу посочувствовать вашим жалобам на проблемы с задержкой, но, по моему опыту, функция AlwaysOn значительно сократила их. Тем не менее, следует помнить, что низкая задержка не является приоритетом GAE как сервиса — это способность стабильно обрабатывать гигантский трафик без необходимости явного масштабирования.

Ответ №2:

Я не думаю, что это обязательно сводит на нет преимущество Always On, которое, предположительно, заключается в том, что пользователям реже приходится ждать, пока новый экземпляр запустится для обслуживания их запроса.

Если у вас включены запросы на прогрев, App Engine может запускать новые экземпляры упреждающим образом, даже если ваши постоянные экземпляры могут обрабатывать текущую нагрузку. В этом случае наличие динамического экземпляра не означает, что запрос пользователя был заблокирован в ожидании загрузки экземпляра.

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

Комментарии:

1. да, я просмотрел руководство GAE, я увидел » если ваше приложение не обслуживает трафик, первым запросом к приложению всегда будет запрос на загрузку, а не на прогрев. В большинстве случаев вы можете предотвратить загрузку запросов, используя функцию Always On. «. Но для утилит малой частоты я вижу, что это часто происходит (каждый день, по крайней мере, один раз).

2. У меня включены запросы на прогрев (включены по умолчанию), поскольку у меня есть приложение Spring MVC, поэтому для загрузки требуется время, поэтому я использую запросы на прогрев. Тем не менее, я действительно могу заметить, когда запрос загружает приложение, а не использует какой-либо доступный экземпляр GAE. Спасибо за идеи, я дополнительно рассмотрю эти запросы, чтобы попытаться найти дополнительные подсказки к тому, что именно происходит

Ответ №3:

Я просто хотел бы добавить ответ, данный мне на идентичный вопрос, который я опубликовал в группе Google-app-engine (Ссылка). Это помогло мне снизить вероятность создания новых узлов, когда в то время существовал какой-либо активный.

Установлено ли для параметра «threadsafe» значение true? Если вы этого не сделаете, каждый экземпляр будет обрабатывать только один запрос за раз.

Это мне очень помогло — попробуйте, если у вас такая же проблема, как и у меня. Using_Concurrent_Requests

Комментарии:

1. кстати, для этого элемента конфигурации вам нужна версия GAE 1.4.3