Сбой проверки работоспособности развертывания App Engine Flex - PullRequest
0 голосов
/ 27 сентября 2019

Я создал приложение Python 3 Flask, которое будет служить прокси API для gunicorn.Я развернул openapi на облачных конечных точках и заполнил службу конечных точек в файле app.yaml.

Когда я пытаюсь выполнить развертывание на flex приложения, проверка работоспособности завершается неудачно, поскольку она занимает слишком много времени.Я пытался изменить app_start_timeout_sec в readiness_check, как предлагалось, но безрезультатно.При проверке логов на стекдрайвере я вижу только то, как gunicorn загружает пару рабочих и в конечном итоге завершает все пару раз подряд.Никаких дальнейших объяснений того, что идет не так.Я также пытался указать ресурсы в app.yaml и масштабировать рабочих в файле gunicorn.conf.py, но безрезультатно.

Затем я попытался переключиться на uwsgi, но это действовало одинаково: запуск и завершение несколько раз подряд и таймаут проверки работоспособности.

ошибка:

ERROR: (gcloud.app.deploy) Error Response: [4] Your deployment has failed to become healthy in the allotted time and therefore was rolled back. If you believe this was an error, try adjusting the 'app_start_timeout_sec' setting in the 'readiness_check' section.

app.yaml

runtime: python
env: flex
entrypoint: gunicorn -c gunicorn.conf.py -b :$PORT main:app

runtime_config:
    python_version: 3

endpoints_api_service:
  name: 2019-09-27r0
  rollout_strategy: managed

resources:
  cpu: 1
  memory_gb: 2
  disk_size_gb: 10

gunicorn.conf.py:

import multiprocessing

bind = "127.0.0.1:8000"
workers = multiprocessing.cpu_count() * 2 + 1

Requirments.txt:

aniso8601==8.0.0
certifi==2019.9.11
chardet==3.0.4
Click==7.0
Flask==1.1.1
Flask-Jsonpify==1.5.0
Flask-RESTful==0.3.7
gunicorn==19.9.0
idna==2.8
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
pytz==2019.2
requests==2.22.0
six==1.12.0
urllib3==1.25.5
Werkzeug==0.16.0
pyyaml==5.1.2

Есть ли кто-нибудь, кто может заметитьконфликт или что-то я здесь забыл?У меня нет идей, и мне действительно нужна помощь.Также определенно помогло бы, если бы кто-то мог указать мне правильное направление, где найти больше информации в журналах (я также запускаю развертывание приложения gcloud с --verbosity = debug, но это только показывает «Служба обновления [по умолчанию] ...».... В ожидании повтора. ").Я действительно хотел бы знать, что заставляет проверки здоровья тайм-аут!

Заранее спасибо!

1 Ответ

0 голосов
/ 27 сентября 2019

Вы можете отключить проверки работоспособности или настроить их:

Для отключения необходимо добавить следующее к вашему app.yaml:

health_check: enable_health_check: False

Для настройкиих вы можете посмотреть в Сплит проверки здоровья .

Вы можете настроить Проверка живучести запрос, добавив необязательный раздел liveness_check к вашему app.yaml файлу, например:

liveness_check: path: "/liveness_check" check_interval_sec: 30 timeout_sec: 4 failure_threshold: 2 success_threshold: 2

В документации вы можете проверить настройки, доступные для проверки живучести.

Кроме того, есть Проверка готовности .Таким же образом вы можете настроить некоторые параметры, например:

readiness_check: path: "/readiness_check" check_interval_sec: 5 timeout_sec: 4 failure_threshold: 2 success_threshold: 2 app_start_timeout_sec: 300

Указанные выше значения могут быть изменены в соответствии с вашими потребностями.Проверяйте эти значения, особенно потому, что App Engine Flexible требуется несколько минут для запуска экземпляра, это значительное отличие от App Engine Standard, и его не следует воспринимать легкомысленно.

Если вы проверяете журналы nginx.health_check дляВ вашем приложении вы можете видеть, что проверки работоспособности происходят чаще, чем вы настроили, из-за избыточных проверок работоспособности, которые также следуют вашим настройкам.Эти избыточные проверки работоспособности создаются автоматически, и вы не можете их настроить.

...