Проблема:
Я развертываю стандартную службу appengine - nodejsv10. Однако после того, как трафик переносится на новую версию, старая версия все еще продолжает работать, а количество экземпляров отображается как 2 или 1. Это по-прежнему имеет место для нескольких развертываний за последнюю неделю, которые не получали трафика более 24 часов (поэтому я не думаю, что это проблема с отложенным обновлением консоли).
Я не хочу, чтобы мне выставляли счет за эти экземпляры, поскольку они мне не нужны. И необходимость вручную удалять эту старую версию кажется глупой для пользователя.
Команда развертывания: gcloud beta app deploy
app.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
Прочитав больше документации, я думаю, что нашел исправление. Я удалил min_instances
и ушел в min_idle_instances
. поскольку min_instances
заставляет экземпляры быть активными независимо от трафика, и min_idle_instances
применяется только к версии, получающей большую часть трафика. Я тестирую это, сообщу, если это не сработает.
https://cloud.google.com/appengine/docs/standard/nodejs/config/appref#automatic_scaling
min_instances
Минимальное количество экземпляров, создаваемых App Engine для этой версии модуля. Эти экземпляры обслуживают трафик при поступлении запросов и продолжают обслуживать трафик, даже когда запускаются дополнительные экземпляры, необходимые для обработки трафика. Обратите внимание, что с вас взимается плата за указанное количество экземпляров, независимо от того, получают они трафик или нет.
min_idle_instances
Количество инстансов, которые будут продолжать работать и готовы обслуживать трафик. Обратите внимание, что с вас взимается плата за указанное количество экземпляров, независимо от того, получают они трафик или нет. Этот параметр применяется только к версии, которая получает большую часть трафика.
Стандартные экземпляры App Engine нельзя остановить, как уже упоминалось Вот если вы не используете ручное или базовое масштабирование. Это будет означать, что если по какой-то причине кто-то сможет получить доступ к URL-адресу вашей предыдущей версии, он запустит экземпляр для обслуживания указанного запроса.
Я бы порекомендовал перейти на другой тип масштабирования (лично я бы выбрал Базовое масштабирование для вашего случая), так как вы сможете остановить экземпляры. В противном случае вам придется удалить предыдущие версии или вы рискуете запустить экземпляр в старой версии без вашего ведома из-за некоторого случайного запроса к более старой версии.
Надеюсь, эта информация окажется для вас полезной.