google-app-engine - 客户端连接到 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
解决方案
推荐阅读
- java - javax.sound 直接控制音频线
- postgresql - Postgresql - ROLLBACK 在函数调用时立即出现
- python - 在 Numpy 中的数组上应用掩码
- python - 重启后系统服务不会启动
- javascript - 如何连接input和three.js画布?
- android - 将迭代器添加到 id --> R.id.+i+
- c# - C# SOAP Webservice 方法返回 null
- python - Python中的SVD图像重建
- c# - 如何参考签入和第二天结帐时间在sql server中获取日期和时间的总工作时间
- printing - 从服务器上运行的 vb 脚本从 Adobe Reader 打印到特定打印机