Google Cloud Workflows - "ResourceLimitError" 在循环中执行 HTTP 请求时
Google Cloud Workflows - "ResourceLimitError" when doing HTTP requests in a loop
我们正在使用 GCP 工作流通过 http.post
调用每 n 秒进行一些 API 状态检查调用。
一切都很好,直到最近我们所有的工作流程都开始因内部错误而失败:
{"message":"ResourceLimitError: Memory usage limit exceeded","tags":["ResourceLimitError"]}
我发现,当我们将 GET
与查询参数一起使用时,失败发生的时间比 POST
和 body.
的失败稍晚。
这是测试工作流程:
main:
steps:
- init:
assign:
- i: 0
- body:
foo: 'thisismyhorsemyhorseisamazing'
- doRequest:
call: http.request
args:
url: https://{my-location-and-project-id}.cloudfunctions.net/workflow-test
method: GET
query: ${body}
result: res
- sleepForOneSecond:
call: sys.sleep
args:
seconds: 1
- logCounter:
call: sys.log
args:
text: ${"Iteration - " + string(i)}
severity: INFO
- increaseCounter:
assign:
- i: ${i + 1}
- checkIfFinished:
switch:
- condition: ${i < 500}
next: doRequest
next: returnOutput
- returnOutput:
return: ${res.body}
它最多可以使用 GET 执行 37 个请求,使用 POST 最多可以执行 32 个请求,然后执行会因错误而停止。而且这个数字不会改变。
作为参考,Firebase 在 POST 上运行并 GET returns 200 与下一个 JSON:
{
"bar": "thisismyhorsemyhorseisamazing",
"fyz": [],
}
知道那里出了什么问题吗?我不认为那里超过了 64Kb 的变量配额。它不应该计算为所有作业的总和,不是吗?
这看起来像是产品的问题,我发现了这个 Google tracker,已报告此问题。
最好继续 public 问题跟踪器。
我们正在使用 GCP 工作流通过 http.post
调用每 n 秒进行一些 API 状态检查调用。
一切都很好,直到最近我们所有的工作流程都开始因内部错误而失败:
{"message":"ResourceLimitError: Memory usage limit exceeded","tags":["ResourceLimitError"]}
我发现,当我们将 GET
与查询参数一起使用时,失败发生的时间比 POST
和 body.
这是测试工作流程:
main:
steps:
- init:
assign:
- i: 0
- body:
foo: 'thisismyhorsemyhorseisamazing'
- doRequest:
call: http.request
args:
url: https://{my-location-and-project-id}.cloudfunctions.net/workflow-test
method: GET
query: ${body}
result: res
- sleepForOneSecond:
call: sys.sleep
args:
seconds: 1
- logCounter:
call: sys.log
args:
text: ${"Iteration - " + string(i)}
severity: INFO
- increaseCounter:
assign:
- i: ${i + 1}
- checkIfFinished:
switch:
- condition: ${i < 500}
next: doRequest
next: returnOutput
- returnOutput:
return: ${res.body}
它最多可以使用 GET 执行 37 个请求,使用 POST 最多可以执行 32 个请求,然后执行会因错误而停止。而且这个数字不会改变。
作为参考,Firebase 在 POST 上运行并 GET returns 200 与下一个 JSON:
{
"bar": "thisismyhorsemyhorseisamazing",
"fyz": [],
}
知道那里出了什么问题吗?我不认为那里超过了 64Kb 的变量配额。它不应该计算为所有作业的总和,不是吗?
这看起来像是产品的问题,我发现了这个 Google tracker,已报告此问题。
最好继续 public 问题跟踪器。