GAE应用程序的请求因连接重置而失败

Chr*_*tos 5 google-app-engine

我们的GAE python应用程序公开了一个受外部客户端系统攻击的API(基于Java,如果重要的话).大多数请求(每天数万个)工作正常,但是少数请求(每天少于10个)失败,客户端报告"Connection Peer by Peer"错误.当发生这种情况时,客户端系统已经触发了多个成功完成的API调用,因此我们排除了客户端连接问题的情况.

GAE日志仅显示与应用相关的故障,但其他类型的故障(例如连接错误)未出现在日志中,因此我们无法确切地说明为什么这些API调用失败.

有没有办法更好地识别日志以外的其他问题?

接受API调用的GAE模块具有以下缩放属性

instance_class: B2
basic_scaling:
  max_instances: 5
  idle_timeout: 1m
Run Code Online (Sandbox Code Playgroud)

并且在发生故障时,只有2个(最多5个)实例在运行,因此GAE模块低于其缩放限制.API调用平均在不到500毫秒的时间内提供服务,而且我们从未看到超过60英寸请求限制的日志错误.总的来说,模块似乎没有超载.可能是别的什么?

Pat*_*ice 0

在我看来,解决问题的最佳解决方案是在连接重置时尝试在代码中使用指数退避算法,因为它会“优雅地失败”并重试。

我还建议转向自动扩展,其中使用最大待处理延迟和最小待处理延迟可能有助于解决此类问题。我没有具体说明如何解决您的问题,但我想摆弄这些可以提供一些结果。