У меня есть управляемая группа экземпляров в проекте в Google Cloud Platform. Моя группа экземпляров использует самые маленькие заранее определенные машины, которые предлагает GCP, f1-micro (дополнительная информация здесь: https://cloud.google.com/compute/docs/machine-types#sharedcore )
У меня включено автомасштабирование в моей группе экземпляров со следующими настройками:
gcloud compute instance-groups managed set-autoscaling [my-ig] \
--region us-central1 \
--min-num-replicas=3 \
--max-num-replicas=15 \
--cool-down-period=250 \
--scale-based-on-cpu \
--target-cpu-utilization=0.9
У меня странное поведение, когда после небольших / коротких пиков использования ЦП автомасштабер решает массово автомасштабировать мои экземпляры, просто чтобы затем вернуться к исходному номеру a несколько минут спустя.
Вот как выглядит график ЦП моей группы экземпляров, на этом снимке экрана у группы экземпляров не было автомасштабирования, и у нее было 3 экземпляра, запускающих мое приложение:
Для меня эти экземпляры не похоже, что им нужно автоматическое масштабирование, они кажутся стабильными с той мощностью, которая у них есть, и на практике веб-сайт действительно работает очень хорошо.
Вот что Google говорит об этом типе экземпляра виртуальной машины:
Типы f1-микромашин предлагают возможности пакетной передачи, которые позволяют экземпляры, чтобы использовать дополнительный физический процессор на короткие периоды времени. Пакетирование происходит автоматически, когда вашему экземпляру требуется больше физический процессор, чем первоначально выделенный. Во время этих всплесков ваш экземпляр будет выгодно использовать доступные физические ЦП в пакетном режиме
Моя проблема:
Мои варианты (я думаю) следующие:
Возможно, вы столкнулись с комбинацией как пакетная способность класса экземпляра f1-micro (который может отправлять информацию об использовании ЦП экземпляра более чем на 100%), так и то, как Autoscaler обрабатывает высокую нагрузку на ЦП .
В периоды высокой загрузки ЦП, если загрузка приближается к 100 %, по оценке автомасштабирования, группа уже может быть сильно перегружена. В этих случаях средство автомасштабирования увеличивает количество виртуальных машин как минимум на 50% или как минимум на 4 экземпляра, в зависимости от того, что больше. В общем, загрузка ЦП в группе управляемых экземпляров не превышает 100%.
Я думаю, вы довольно хорошо изложили свои варианты. Я бы порекомендовал проверить, можете ли вы вообще обойтись без автомасштабирования.
Если распределение нагрузки вашего приложения коррелирует с суточным ритмом (отсутствие трафика ночью, высокая нагрузка днем), вы можете настроить размер группы экземпляров полуавтоматически (подумайте, вызов GCE API / gcloud из cron).