Unicorn 3.3.1 "Too many open files" error in kgio_tryaccept

ghazel at gmail.com ghazel at gmail.com
Thu Jan 13 21:17:41 EST 2011

On Thu, Jan 13, 2011 at 3:06 PM, Eric Wong <normalperson at yhbt.net> wrote:
> ghazel at gmail.com wrote:
>> Strange error which took down my server today:
>> Unhandled listen loop exception #<Errno::EMFILE: Too many open files - accept>.
>> ...
>> My unicorn.stderr.log is 7.6GB, and I rotate it every day...
>> Before all that started I got:
>> Read error: #<IOError: closed stream>
>> /usr/local/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/unicorn-3.3.1/lib/unicorn/http_response.rb:37:in
>> But the servers seemed to be basically operating at that point.
> Weird.  I have many questions:
> Are you processing uploads at all?

Yes, but I have been processing uploads on Unicorn since 0.99.something

> Is nginx in front of Unicorn?


> Do you open a lot of files in your application and never close them?[1]

I don't believe so, and certain nothing has changed there in quite awhile.

> How does lsof output look for your workers?

Hm. The workers seem to be at 80-90 file descriptors each. I did catch
one at 787 (!) with mostly handles to a geoip database from the geoip
gem, but they got collected pretty quickly. Perhaps that's the cause!

> Can you check any exception capturing/logging middleware you have
> for any other errors that may be swallowed? (especially
> while reading env["rack.input"])

I don't have any non-standard Rails 2.3.10 middleware which reads rack.input.

> I changed the socket close ordering for 3.3.1 to workaround an esoteric
> "bug", but I don't see how this could happen right now...
> Does this happen with 3.3.0?

I've only seen it once. If I manage to reproduce it I'll try with 3.3.0.


More information about the mongrel-unicorn mailing list