如何增加 Google App Engine 中的并发任务数?

How can I increase number of concurrent task in Google App Engine?

我正在使用 App Engine 并发处理大量 运行 长任务(因此我需要使用基本缩放)。

我注意到一个实例只能同时处理8个任务(与B4实例的worker数量一致)。对于我收到的第九个任务:

POST 503: Request was aborted after waiting too long to attempt to service your request.

如何在不添加更多实例的情况下同时处理比这更多的任务?

您是否尝试过在 app.yaml 中增加 max_concurrent_requests?它应该默认能够一次处理 10 个请求。

https://cloud.google.com/appengine/docs/standard/python3/config/appref#max_concurrent_requests

作为 best practice,您指定的工作人员数量应与 App Engine 应用程序的实例 class 匹配,但您可以通过修改入口点中的工作人员数量来更改它,如下面的例子,试试看它是否适合你。

entrypoint: gunicorn -b :8080 -w 2 main:app

考虑通过在 basic_scaling 设置的 max_instances 参数中设置最大实例数来配置具有基本缩放的服务。您可以通过更改为手动缩放来控制实时实例缩放的数量与处理量。

如果您使用 basic scaling,App Engine 会尝试保持较低的成本,即使这可能会随着传入请求量的增加而导致延迟增加。

如果您调整缩放设置以通过最小化空闲实例来降低成本,那么您 运行 如果负载意外增加,您将面临延迟峰值的风险。

基本 scaling type 旨在以延迟为代价最大限度地降低成本。 您的代码需要 scale the number of workers 基于处理量。如果您的代码不处理缩放,那么如果没有要处理的任务,您就有浪费计算资源的风险;如果您要处理的任务太多,您还会面临延迟的风险。 加速请求的一个好方法是使用多个 caching layers.

This article 有助于处理实例设置并修改它以获得所需的性能。