首页 > 解决方案 > 客户端连接到 Google App Engine 时出现随机 ERR_CONNECTION_CLOSED 错误

问题描述

我们的应用在 Google App Engine python2.7 标准环境下运行。自 2021 年 3 月 8 日以来,已有数百个用户报告称在从浏览器向应用程序发出 API 请求时收到 ERR_CONNECTION_CLOSED。

受影响的浏览器包括最新版本的 Chrome、Safari、Firefox 和 Edge,因此不太可能是特定浏览器/扩展程序的问题。此外,在我们的原生 Android/iOS 应用程序连接到应用程序引擎上的相同 API 时,也会出现类似的问题。

当我们在 Google Cloud 控制台上查看日志查看器时,我们可以看到虽然浏览器报告了 ERR_CONNECTION_CLOSED,但请求实际上已经传递给了一个实例,并且成功生成了 200 OK 响应,并且没有错误。这表明每次发生此问题时,特定客户端都能够连接到服务器并发送请求,但它无法收到任何响应。

此外,从应用程序日志中,我们可以看到有时一个请求会在 2-4 秒内发送两次。由于我们的客户端应用程序本身不会发送 2 个相同的请求,这可能是由于客户端在连接关闭后重试所致。我们的 API 处理程序优化程度较低,最多可能需要 10 秒才能产生响应,但这完全在应用引擎的 60 秒限制内。我们的 API 处理程序也不编写部分响应。在所有处理完成后写入响应。

看起来,这个问题只影响了我们的一小部分用户,并且不会影响他们对同一服务的所有请求。当用户受到影响时,更换浏览器甚至设备都无济于事。当像我这样的用户不受影响时,我可以保持几天的刷新,不会有任何问题。我已尝试登录受影响用户的帐户,但问题并没有发生在我身上,因此不太可能是应用程序级别的帐户特定问题(应用程序日志也证实了这一点)。

的相关部分app.yaml

runtime: python27
service: apis2
api_version: 1
threadsafe: true
instance_class: F2

inbound_services:
- warmup

builtins:
- appstats: on
- remote_api: on
- deferred: on

automatic_scaling:
    min_instances: 0
    min_idle_instances: 0
    max_instances: 600

标签: google-app-enginegoogle-cloud-platform

解决方案


推荐阅读