【问题标题】:Communication errors with Amazon SWF - Ruby FlowAmazon SWF 的通信错误 - Ruby Flow
【发布时间】:2013-09-03 16:14:03
【问题描述】:

我们在使用 Amazon SWF 的新 Ruby-Flow 包装器时遇到问题。

问题是工作流和活动工作人员将(每小时数次)无法与 SWF 服务器正确通信。这体现在各种方面:

  • 工作流或活动在新版本启动时无法注册
  • 工作流或活动工作者将崩溃
  • activity worker 会完成一个任务,然后在报告完成的时候报错,所以整个执行失败。

对于工人崩溃(任何一种),我们看到以下内容:

andy@Andy-MBP:Crucible $RAILS_ENV=development rake crucible:swf:ingress_wf_start
rake aborted!
execution expired
/Users/andy/.rvm/gems/ruby-1.9.3-p448@rails3/gems/aws-sdk-1.11.1/lib/aws/core/http/connection_pool.rb:301:in `start_session'
/Users/andy/.rvm/gems/ruby-1.9.3-p448@rails3/gems/aws-sdk-1.11.1/lib/aws/core/http/connection_pool.rb:125:in `session_for'
/Users/andy/.rvm/gems/ruby-1.9.3-p448@rails3/gems/aws-sdk-1.11.1/lib/aws/core/http/net_http_handler.rb:52:in `handle'
/Users/andy/.rvm/gems/ruby-1.9.3-p448@rails3/gems/aws-sdk-1.11.1/lib/aws/core/client.rb:238:in `block in make_sync_request'

当失败涉及未能更新任务已完成的服务器时,回溯非常相似。

这本身似乎不是 SWF 问题(也就是说,它不是活动执行的超时);这是一个 Ruby HTTP 通信问题。与 Twitter API 通信的 SO 也存在类似问题。

同样,SWF 超时到期不是问题;工作流的超时时间为一天,每个活动的超时时间为一小时。故障发生在该边界内。

不幸的是,它大部分都有效,我通常可以启动工作流执行,我只是经常遇到这种错误,以至于我们除了琐碎的工作之外什么都做不了。这些错误非常随机,因此故障排除非常困难。

我们已经在不同的机器和不同的网络上复制了这个。我们仍在尝试开发中的 SWF,因此失败的工作人员都不会位于 EC2 实例上。


是否有我应该调查的根本原因?
是否有允许我重试这些通信的模式或设置?

【问题讨论】:

    标签: ruby amazon-web-services


    【解决方案1】:

    我已经与维护 ruby​​-flow 库的亚马逊人员详细讨论了这个问题。可以在here 找到该讨论。

    问题是我们的计算机无法打开与 AWS 服务器的连接。将重试计数设置得非常高已经解决了我们开发目的的问题。

    根本原因似乎在 Mac OSX 中。我们将其用于开发,并在几台不同的机器(运行 10.7 和 10.8)上发现了这个超时问题。

    新的 Linux 机器没有出现问题。

    【讨论】:

      猜你喜欢
      • 2016-05-04
      • 2013-01-27
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      相关资源
      最近更新 更多