Unicorn 3.3.1 "Too many open files" error in kgio_tryaccept

Eric Wong normalperson at yhbt.net
Thu Jan 13 18:06:09 EST 2011

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?

Is nginx in front of Unicorn?

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

How does lsof output look for your workers?

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 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?

Or 1.1.6? hiswhich has the same "bugfix" as 3.3.1.

Also, is anybody else having this problem?

[1] - GC should be able to cleanup open files on MRI/REE anyways

Eric Wong

More information about the mongrel-unicorn mailing list