Проблема:
Я развертываю стандартную службу appengine - nodejsv10. Однако после переноса трафика на новую версию старая версия все еще остается работающей, а количество экземпляров указано как 2 или 1. Это по-прежнему касается нескольких развертываний за последнюю неделю, которые не получали трафик более 24 часов (поэтому я не думаю, что это проблема задержки обновления консоли).
Я не хочу получать счет за эти экземпляры, поскольку они мне не нужны. А необходимость вручную удалять эти старые версии кажется глупым пользовательским опытом.
Команда развертывания:gcloud beta app deploy
приложение.yaml
env: standard
instance_class: F4
inbound_services:
- warmup
automatic_scaling:
min_idle_instances: 1
max_idle_instances: 1
min_pending_latency: automatic
max_pending_latency: automatic
max_concurrent_requests: 15
min_instances: 1
решение1
После более подробного прочтения документации, я думаю, что нашел решение. Я удалил min_instances
и оставил в min_idle_instances
. Так как min_instances
заставляет экземпляры быть активными независимо от трафика и min_idle_instances
применяется только к версии, получающей большую часть трафика. Я тестирую это, сообщу, если это не сработает.
https://cloud.google.com/appengine/docs/standard/nodejs/config/appref#автоматическое_масштабирование
мин_экземпляры
Минимальное количество экземпляров, которые App Engine может создать для этой версии модуля. Эти экземпляры обслуживают трафик при поступлении запросов и продолжают обслуживать трафик, даже если запускаются дополнительные экземпляры, необходимые для обработки трафика. Обратите внимание, что с вас взимается плата за указанное количество экземпляров независимо от того, получают они трафик или нет.
min_idle_instances
Количество экземпляров, которые должны быть запущены и готовы обслуживать трафик. Обратите внимание, что с вас взимается плата за указанное количество экземпляров, независимо от того, получают ли они трафик или нет. Этот параметр применяется только к версии, которая получает большую часть трафика.
решение2
Стандартные экземпляры App Engine не могут быть остановлены, как упоминалось ранее.здесьЕсли вы не используете Manual или Basic Scaling. Это будет означать, что если по какой-то причине кто-то сможет получить доступ к URL вашей предыдущей версии, он запустит экземпляр для обслуживания указанного запроса.
Я бы рекомендовал перейти на другой тип масштабирования (лично я бы выбралБазовое масштабированиедля вашего случая), поскольку вы сможете остановить экземпляры. В противном случае вам придется удалить предыдущие версии или рисковать тем, что экземпляр будет запущен на старой версии без вашего ведома из-за случайного запроса к старой версии.
Надеюсь, эта информация окажется для вас полезной.