【发布时间】:2020-03-09 21:42:47
【问题描述】:
我有一个托管在 GKE 上的应用程序,在许多任务中,它向客户端提供一个 zip 文件。这些 zip 文件是通过谷歌云存储上的许多单独文件动态构建的。
我面临的问题是,当这些 zip 变得特别大时,连接会随机失败(介于 1.4GB 到 2.5GB 之间)。似乎也没有任何时间模式 - 它可能发生在 2-8 分钟之间。
AFAIK,负载平衡器和我的应用程序之间的连接断开了。是否已知 GKE 入口(负载平衡器)会关闭长/大连接?
GKE 设置:
- HTTP(S) 负载平衡器入口
- NodePort 后端服务
- 部署(我的应用)
更多细节/调试步骤:
- 我无法在本地复制它(没有 kubernetes)。
- 负载平衡器记录
statusDetails: "backend_connection_closed_after_partial_response_sent",而响应具有 200 状态代码。对此的谷歌没有提供任何帮助。 - 直接访问pod并使用k8s port-forward下载成功
- 我的应用记录了请求已被取消(由请求者)
- 我可以验证没有文件损坏(可以直接从存储中下载所有文件)
【问题讨论】:
-
您是否在 nginx 上运行您的应用程序并使用 websocket procol 下载文件?
标签: kubernetes google-cloud-platform google-kubernetes-engine kubernetes-ingress google-cloud-load-balancer