У нас похожая проблема в нашем приложении.В нашем случае у нас сложилось впечатление, что планировщик GAE плохо справился с балансировкой запросов к существующим экземплярам.
В некоторых случаях планировщик решил ускорить новые экземпляры вместо повторного использования уже существующих.Поскольку вращение нового экземпляра заняло от 5 до> 45 секунд, я подозреваю, что это могло произойти с вами.
Попробуйте изучить следующее и посмотреть, поможет ли оно вам:
- Убедитесь, что в вашем приложении включена поддержка потоковой обработки , чтобы вы могли обрабатывать параллельные запросы.Вы можете настроить это в своем app.yaml , если вы используете Python, или в своем appengine-web.xml , если вы используете Java.Конечно, вам также необходимо убедиться, что код в вашем приложении является поточно-ориентированным.
- Если в настройках приложения установлено автоматическое значение, изменить минимальную задержку ожидания на неавтоматическую.настройка. Я бы посоветовал около 10 секунд, но позже вы можете поэкспериментировать, какая настройка подойдет вам больше всего.Это вынуждает планировщика ждать определенное время, чтобы увидеть, доступен ли какой-либо экземпляр за это время, прежде чем раскрутить новый экземпляр.
Теперь, чтобы ответить на ваш первоначальный вопрос относительно sending all requests to same instance
, насколько это возможно.как я знаю, нет способа обратиться к конкретному внешнему экземпляру, чтобы направить запросы к этому конкретному экземпляру.
То, что вы можете сделать, - это перенести приложение для использования внутренних экземпляров вместо обычного внешнего интерфейса.Backends предоставляет способ напрямую нацеливаться на любой конкретный экземпляр в нем .Вы можете развернуть свое приложение в одном бэкэнде, чтобы иметь больше контроля над количеством экземпляров, которые вы создали.А поскольку при использовании внутреннего обхода планировщика вы не столкнетесь с задержками, вызванными ускорением появления новых экземпляров.
Основным недостатком использования этого подхода является то, что вы теряете преимущество автоматической масштабируемости при использовании внешних экземпляров.Но, учитывая низкую ежедневную оплату, я думаю, что масштабируемость пока не является серьезной проблемой для масштаба вашего приложения.