В результате непрерывного перезапуска приложение движка приложения отключается. Есть ли способ изменить конфигурацию, чтобы предотвратить это? - PullRequest
0 голосов
/ 29 октября 2018

Примерно раз в неделю наше гибкое приложение узла механизма приложений отключается, и в журналах появляется следующая строка: Restarting batch of VMs for version 20181008t134234 as part of rolling restart. Наше приложение настроено на автоматическое масштабирование со следующими настройками:

runtime: nodejs
env: flex
beta_settings:
 cloud_sql_instances: tuzag-v2:us-east4:tuzag-db
automatic_scaling:
 min_num_instances: 1
 max_num_instances: 3
liveness_check:
 path: "/"
 check_interval_sec: 30
 timeout_sec: 4
 failure_threshold: 2
 success_threshold: 2
readiness_check:
 path: "/"
 check_interval_sec: 15
 timeout_sec: 4
 failure_threshold: 2
 success_threshold: 2
 app_start_timeout_sec: 300
resources:
 cpu: 1
 memory_gb: 1
 disk_size_gb: 10

Я понимаю, что GCP / GAE перезапускается, но я не совсем понимаю, почему Google не раскручивает другую виртуальную машину, прежде чем отключить нашу основную. Нужно ли нам запускать минимум 2 экземпляра, чтобы этого не случилось? Есть ли способ настроить мой app.yaml, чтобы убедиться, что другой экземпляр запускается до того, как он перезагрузит единственный работающий экземпляр? После завершения перезагрузки все возвращается в рабочее состояние, но время простоя по-прежнему составляет 10 минут, что недопустимо, особенно если учесть, что мы не можем контролировать , когда перезагружается.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

Мы знаем, что ожидаемое поведение , что экземпляры Flexible перезапускаются еженедельно. При условии, что проверки работоспособности настроены правильно и не являются проблемой, рекомендация действительно состоит в том, чтобы настроить как минимум два экземпляра.

Нет альтернативной функциональности в App Engine Flex, о которой я знаю, которая создает новый экземпляр, чтобы избежать простоев в результате еженедельного перезапуска. Вы можете попытаться запустить непосредственно на Google Compute Engine вместо App Engine и самостоятельно управлять обновлениями и обслуживанием, возможно, это лучше подойдет для вашей цели.

0 голосов
/ 31 октября 2018

Вы только догадываетесь, основываясь на этом графике num экземпляров на панели инструментов движка приложения? Или ваш движок приложений на самом деле не реагировал в это время?

Вы можете использовать cron, чтобы нажимать его каждые 5 минут, чтобы увидеть, реагирует ли он.

Сохраняется ли эта проблема, если вы измените cool_down_period_sec & target_utilization на их значения по умолчанию?

Если ваша служба действительно не работает в течение этого времени, возможно, вам следует реализовать обработчик запросов для проверки жизнеспособности: https://cloud.google.com/appengine/docs/flexible/python/reference/app-yaml#updated_health_checks

Конфигурация опроса по умолчанию сообщит GAE о запуске через пару минут

Еще одна вещь, заслуживающая двойной проверки, - это время, необходимое для запуска вашего экземпляра.

...