首页 > 解决方案 > GCP Cloud Run 对使用 http2 的长时间运行请求产生间歇性 503 错误

问题描述

当为大文件调用我的云运行服务(服务上启用了 http2!)并取消一些请求时,我收到间歇性的 503 错误。这个问题与负载无关(用 apache bench 测试)。我试图将并行请求计数降低到 1。我们的测试人员首先遇到了由于 api 服务器的 503 错误而导致 CORS 错误的测试人员。

我的 curl 测试设置:在这些长时间运行的请求期间请求一个大文件(5 个并行请求),我开始并取消(SIGTERM)对同一文件的 curl 请求

我间歇性地遇到 503 错误。20 次运行,5 次并行下载(总共 100 个请求),大约 5-15 次产生 503 错误

我的设置:节点 14,Fastify 3.15

标签: node.jsgoogle-cloud-platformhttp2google-cloud-runfastify

解决方案


经过长时间的测试和挠头,解决方案很简单。节点的 http2SessionTimeout(通过 fastify 选项设置)是解决方案。默认为 5 秒。这产生了上述错误。我已经尝试了节点默认值 0。这产生了一个无法使用的云运行服务器。

解决方案是将 http2SessionTimeout 设置为 10 分钟。


推荐阅读