【问题标题】:Requests to GAE app fail with Connection Reset对 GAE 应用程序的请求因连接重置而失败
【发布时间】:2015-05-22 12:55:42
【问题描述】:

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

GAE 日志仅显示与应用相关的故障,但其他类型的故障(例如连接错误)不会出现在日志中,因此我们无法确定这些 API 调用失败的原因。

除了日志之外,还有什么方法可以更好地识别此类问题?

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

instance_class: B2
basic_scaling:
  max_instances: 5
  idle_timeout: 1m

并且在发生故障时,只有 2 个(最多 5 个)实例在运行,因此 GAE 模块低于其扩展限制。 API 调用的平均服务时间不到 500 毫秒,我们从未见过超过 60" 请求限制的日志错误。总体而言,该模块似乎没有过载。可能是其他原因吗?

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

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

    我还建议转移到automatic scaling,在那里使用最大等待延迟和最小等待延迟可能有助于解决这些问题。我没有具体说明什么可以解决您的问题,但我想摆弄这些可能会带来一些结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多