Google cloud platform Google云任务队列未并行运行
我在google cloud中有一个项目,其中有两个任务队列:Google cloud platform Google云任务队列未并行运行,google-cloud-platform,google-cloud-tasks,Google Cloud Platform,Google Cloud Tasks,我在google cloud中有一个项目,其中有两个任务队列:处理请求接收请求并对其进行处理,发送结果将已处理请求的结果发送到另一台服务器。它们都在名为远程处理的实例上运行 我的问题是,我看到任务在send result中排队,但它们仅在process request队列为空且已处理所有请求后执行。 这是实例配置: instance_class: B4 basic_scaling: max_instances: 8 以下是队列配置: - name: send-result max_c
处理请求
接收请求并对其进行处理,发送结果
将已处理请求的结果发送到另一台服务器。它们都在名为远程处理的实例上运行
我的问题是,我看到任务在send result
中排队,但它们仅在process request
队列为空且已处理所有请求后执行。
这是实例配置:
instance_class: B4
basic_scaling:
max_instances: 8
以下是队列配置:
- name: send-result
max_concurrent_requests: 20
rate: 1/s
retry_parameters:
task_retry_limit: 10
min_backoff_seconds: 5
max_backoff_seconds: 20
target: remote-processing
- name: process-request
bucket_size: 50
max_concurrent_requests: 10
rate: 10/s
target: remote-processing
澄清:我不需要队列按特定顺序运行,但我发现很奇怪,保险似乎一次只运行一个队列,因此它只会在处理完当前队列后运行另一个队列中的任务 这一切发生在什么时期
与发送结果
任务相比,过程请求
任务运行需要多长时间
突出的一点是,您的处理请求的速率
远高于发送结果的速率。因此,可能有几个send result
任务正在压缩,但它随后会达到rate
cap,必须运行process request
任务
与桶大小的注释相同
。与速率相比,处理请求的桶大小
是巨大的:
bucket大小限制了在处理多个任务时队列的处理速度
在队列中,并且速率很高。铲斗的最大值
尺寸是500。这允许您拥有较高的速率,以便开始处理
任务入队后不久,但在
许多任务在短时间内排队
如果不为队列指定bucket_大小,则默认值为5。
我们建议您将其设置为更大的值,因为默认值为
对于许多用例,大小可能太小:建议的大小为
处理速率除以5(速率/5)
另外,通过设置max_instances:8
这些队列中是否会积累大量积压的工作
让我们尝试两件事:
将bucket\u size
和rate
设置为与处理请求
和发送结果
相同。如果修复了它,那么开始摆弄这些值以获得所需的平衡
启动max_实例:8
,查看移除瓶颈是否可以解决问题
这一切发生在什么时期
与发送结果
任务相比,过程请求
任务运行需要多长时间
突出的一点是,您的处理请求的速率
远高于发送结果的速率。因此,可能有几个send result
任务正在压缩,但它随后会达到rate
cap,必须运行process request
任务
与桶大小的注释相同
。与速率相比,处理请求的桶大小
是巨大的:
bucket大小限制了在处理多个任务时队列的处理速度
在队列中,并且速率很高。铲斗的最大值
尺寸是500。这允许您拥有较高的速率,以便开始处理
任务入队后不久,但在
许多任务在短时间内排队
如果不为队列指定bucket_大小,则默认值为5。
我们建议您将其设置为更大的值,因为默认值为
对于许多用例,大小可能太小:建议的大小为
处理速率除以5(速率/5)
另外,通过设置max_instances:8
这些队列中是否会积累大量积压的工作
让我们尝试两件事:
将bucket\u size
和rate
设置为与处理请求
和发送结果
相同。如果修复了它,那么开始摆弄这些值以获得所需的平衡
启动max_实例:8
,查看移除瓶颈是否可以解决问题