Google Cloud Tasks孤立了

时间:2019-04-16 15:33:37

标签: google-app-engine google-cloud-platform google-app-engine-python google-cloud-tasks

我有一个App Engine flex应用,该应用接受一些后台计算的请求,并将其放在任务队列中进行处理。从另一个进程以相当恒定的速率发送请求。全新部署后,请求的处理速度非常快(ms),但是随后延迟迅速增加到几秒钟,然后增加到几分钟,然后完全阻塞。我在Cloud Tasks中注意到,队列中没有任务时,有正在运行的任务。这些似乎消耗了实例资源,并停留了几个小时,远远超过了任何超时时间。一旦我的实例被这些任务所阻塞,即使超时时间非常长,我的其他进程似乎也无法发出请求而不会超时。使用自动缩放功能,我认为App Engine应该启动更多任务来处理传入请求(source)。

任务处理程序并不十分复杂。他们只是在Google Spanner数据库上执行一些操作,并从GCS(IO密集型)读取/写入。

应用配置:

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

0 个答案:

没有答案