文件结尾达到了EOFError(Databasedotcom + Rails + Heroku)

时间:2013-07-08 06:26:13

标签: ruby-on-rails ruby https salesforce

经过多次挫折之后,我试图弄明白自己,我正在接触那些人(你们!)来帮助我追踪这个令人生畏的错误:

  

消息:文件结束到达EOFError Backtrace:   [“/app/vendor/ruby-1.9.3/lib/ruby/1.9.1/openssl/buffering.rb:174:in   `sysread_nonblock

背景:我的应用是在Heroku和100%后端应用上托管的Rails 3应用。它使用Redis / Resque工作人员使用Chatter REST API处理从Salesforce收到的有效负载。

麻烦:与Ruby中的HTTPS / OpenSSL中其他类似的EOF错误不同,我的错误发生得非常随机(因为我还不能预测这会出现什么时候)。

常见嫌疑人:当我尝试创建45个Resque工作人员并尝试同时同步来自45个不同Salesforce Chatter REST API连接的数据时,会经常发现错误!由于这个错误,我的处理失败了20%或更多,并且都是如此频繁。

补救措施: 我正在使用Databasedotcom gem,它使用HTTPS并遵循所有必需的步骤来连接以创建一个理智的HTTPS连接。 所以......

  • 使用HTTPS中设置的SSL - 已选中
  • URI编码 - 已检查
  • Ruby 1.9.3 - 已检查
  • HTTP读取超时设置为900(15分钟)
  • 我在每次重试前睡30秒后重试此EOF错误MAX 30次! 它仍然失败了一些数据。

请问这里有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

您是否认为Salesforce可能不会同时从单一来源获得这么多连接而您被DDOS防护器阻止?

另外,设置这些长时间超时是没用的。如果连接失败,请将其丢弃并自行重新安排新的连接。这就是Resque做得很好的事情,如果它一直存在问题,它会累积那些等待时间......