[ruby-dev:39421] がずっと心に残っていたので、思い立って調べてみたので、 (正確には自分が高頻度で踏むようになったので調べてみた) その調査結果と対策案を提案します。 まず、投げられる原因ですが、根本的な原因は Keep-Alive のタイムアウトです。 HTTP/1.1 ではデフォルトで持続的接続を行うので、複数回のリクエストに渡って 一つの socket が使い回されます。 しかし、リクエスト同士で時間が開いていると、サーバー側でタイムアウトする 可能性があります。この時にクライアント側の read(2) が 0 を返す、 つまり EOFError となることがあります。 HTTP/1.1 は、冪等なメソッドの場合には確認なしにリトライすべきと言っているので、 そのようにするパッチを添付します。 冪等でないメソッドの場合にどうするべきかは悩ましいところです。 http: