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

时间:2015-05-22 12:55:42

标签: 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

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

1 个答案:

答案 0 :(得分:0)

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

我还建议转到automatic scaling,在那里玩最大待决延迟和最小待处理延迟,这可能有助于解决这些问题。我没有具体说明什么可以解决你的问题,但我想摆弄这些可以提供一些结果。