ERROR Errno::ECONNRESET: Connection reset by peer @ io_fillbuf.

I am getting problems with a json request using the rails api gem and webrick.

When i do a index search with GET, i have an error ERROR Errno::ECONNRESET: Connection reset by peer @ io_fillbuf. Below is a full log of the problem.I have been trying to google the io_fillbuf but i can’t seem to find any clear answers to what it is.

In my ApplicationController i have “skip_before_action :verify_authenticity_token” as I am just using rails api for a pure json app.

Started GET “/api/v1/images.json?type=index&more=yes&offset=80” for 169.254.249.61 at 2014-08-21 10:30:15 Processing by Api::V1::ImagesController#index as JSON

Parameters: {“type”=>“index”, “more”=>“yes”, “offset”=>“80”} index

params type index
images length 20
Completed 200 OK in 97ms (Views: 0.1ms | ActiveRecord: 0.0ms)
[2014-08-21 10:30:15] ERROR Errno::ECONNRESET: Connection reset by peer @ io_fillbuf - fd:19

/Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:80:in eof?' /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:80:in run’ /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread’

[2014-08-21 10:30:15] ERROR Errno::ECONNRESET: Connection reset by peer @ io_fillbuf - fd:15 /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:80:in eof?' /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:80:in run’ /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread’

[2014-08-21 10:30:15] ERROR Errno::ECONNRESET: Connection reset by peer @ io_fillbuf - fd:18 /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:80:in eof?' /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:80:in run’ /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread’

[2014-08-21 10:30:15] ERROR Errno::ECONNRESET: Connection reset by peer @ io_fillbuf - fd:15 /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:80:in eof?' /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:80:in run’ /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread’

[2014-08-21 10:30:15] ERROR Errno::ECONNRESET: Connection reset by peer @ io_fillbuf - fd:18 /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:80:in eof?' /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:80:in run’ /Users/user/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread’

Is it trying to fetch something from another server? If so perhaps
that connection is failing.
Show us ImagesController#index
Does it happen every time you perform the request?

Colin

It is not trying to fetch anything from another server.

It does not happen every time i perform the request. Only once when i was requesting the page.

def index

images = Image.order(“id DESC”).limit(IMAGES_PER_PAGE+1).offset(offset)

if images.length > IMAGES_PER_PAGE

hasMore = “yes”

images = images.first(IMAGES_PER_PAGE)

offset = offset + IMAGES_PER_PAGE

end

finaljson = {:type => “index”, :offset => offset, :iteration => 0, :limit => IMAGES_PER_PAGE, , :images => images}

render :status=>200, :json => finaljson.to_json(:include => :comments)

end

On the Heroku platform I always see an intermittent (and usually very rare) occurrence of "Connection reset by peer" on ALL external services -- Redis, database, etc. I believe this to be network-related and there's little you can do to prevent it.

Typically my application controller has several rescue_from(s) to deal with all of these exceptions, gracefully informing the user that there was a momentary problem and to please try again.

If it happens with frequency, figure out which external service is the problem and take it up with your hosting provider or the provider for the external service.

It could happen just talking to the database. Can you investigate if that query is prohibitively expensive or causes the database to hit a bottleneck?

Its shouldn’t be prohibitively expensive, I’ll have to run more extensive test to analyze the cost.