2013-07-08 25 views
2

太多的無奈試圖找出自己後,我到達了這麼傢伙(你)幫我跟蹤這個可怕的錯誤:末達到的EOFError(Databasedotcom +滑軌+的Heroku)

Message: end of file reached 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收到的有效內容。

麻煩:不像在HTTPS/OpenSSL的Ruby的EOF的其他類似的錯誤,我的錯誤發生得非常隨機的(因爲我還不能預測什麼時候才能拿出)。

非常嫌疑犯:該錯誤已初見成效相當頻繁,當我嘗試創建45名Resque工人,並嘗試在所有同步一次從45個不同的Salesforce的顫振REST API連接數據!由於這個錯誤,我的處理失敗了20%甚至更多,這是非常頻繁的。

補救步驟: 我使用它使用HTTPS,並遵循所有必要的步驟來連接到創建一個健全的HTTPS連接Databasedotcom寶石。 所以......

  • 使用SSL的HTTPS設置 - 選中
  • URI編碼 - 檢查
  • 的Ruby 1.9.3 - 檢查
  • HTTP讀超時設置爲900(15分鐘)
  • 我在每次重試前30秒睡眠後重試此EOF錯誤MAX 30次! 儘管如此,它仍然失敗了一些數據。

請幫忙嗎?

+0

我遇到同樣的問題。你介意分享你最終做的事情嗎? – oregontrail256

回答

0

您是否認爲Salesforce可能不會像單一來源一樣喜歡這麼多連接,並且您被DDOS防護程序阻止?

另外,設置這些超時時間是無用的。如果連接失敗,請刪除它並重新安排一個新的連接。這就是Resque做的很好,如果它一直有問題,它會加起來那些等待時間...

+0

感謝Hugo,感謝Salesforce cue的DDOS!但我不明白我該如何「如果連接失敗,請刪除它並自行重新安排一個新連接。」做這個? –

+0

如果您在Resque任務中建立連接,並告訴Resque動作失敗(當然是),Resque將重新安排任務本身,然後當然會進行新的連接嘗試。 –