Облачные задачи Google осиротели - PullRequest
1 голос
/ 16 апреля 2019

У меня есть гибкое приложение App Engine, которое принимает запросы на некоторые фоновые вычисления и помещает их в очередь задач для обработки.Запросы отправляются с довольно постоянной скоростью из другого процесса.После нового развертывания запросы обрабатываются довольно быстро (мс), но затем задержка быстро увеличивается до секунд, а затем минут до полной засоренности.В Cloud Tasks я замечаю, что есть задачи, выполняющиеся, когда в очереди нет задач.Похоже, что они используют ресурсы экземпляра и застряли в течение нескольких часов, намного превышая время ожидания.Как только мои экземпляры забиты этими задачами, мой другой процесс не сможет отправлять запросы без тайм-аута, даже с очень большим тайм-аутом.Используя автоматическое масштабирование, я думал, что App Engine должен ускорить выполнение дополнительных задач для обработки входящих запросов ( source ).

Обработчики задач не очень сложны.Они просто выполняют некоторые операции с базой данных Google Spanner и выполняют чтение / запись в / из GCS (интенсивный ввод-вывод).

Конфигурация приложения:

runtime: python
env: flex
service: pipeline
entrypoint: gunicorn -b :$PORT main:app --timeout 300
threadsafe: true

runtime_config:
  python_version: 3

Конфигурация очереди:

app_engine_http_queue {
}
rate_limits {
  max_dispatches_per_second: 500.0
  max_burst_size: 100
  max_concurrent_dispatches: 1000
}
retry_config {
  max_attempts: 100
  min_backoff {
    nanos: 100000000
  }
  max_backoff {
    seconds: 3600
  }
  max_doublings: 16
}
state: RUNNING

Orphaned tasks Increasing latencies

...