'listen loop error: Socket operation on non-socket' when trying to run Unicorn

'listen loop error: Socket operation on non-socket' when trying to run Unicorn

我上周开始处理别人的 Rails 项目。在整个星期的工作中,一切都按预期工作,直到几天前,当我尝试 运行 本地服务器时(因为我已经做过很多次)。

该项目使用 rake 任务来启动服务器,但我将问题缩小到只是试图获取 Unicorn 运行ning。这是我在 运行ning bundle exec unicorn:

之后得到的错误
I, [2015-04-25T20:38:10.794243 #1249]  INFO -- : listening on addr=0.0.0.0:8080 fd=9
I, [2015-04-25T20:38:10.794400 #1249]  INFO -- : worker=0 spawning...
I, [2015-04-25T20:38:10.795363 #1249]  INFO -- : master process ready
I, [2015-04-25T20:38:10.796474 #1250]  INFO -- : worker=0 spawned pid=1250
I, [2015-04-25T20:38:10.797102 #1250]  INFO -- : Refreshing Gem list
I, [2015-04-25T20:38:17.102292 #1250]  INFO -- : worker=0 ready
E, [2015-04-25T20:38:17.102705 #1250] ERROR -- : listen loop error: Socket operation on non-socket - accept (Errno::ENOTSOCK)
E, [2015-04-25T20:38:17.102861 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:669:in `kgio_tryaccept'
E, [2015-04-25T20:38:17.103015 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:669:in `worker_loop'
E, [2015-04-25T20:38:17.103201 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:525:in `spawn_missing_workers'
E, [2015-04-25T20:38:17.103345 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:140:in `start'
E, [2015-04-25T20:38:17.103473 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/gems/unicorn-4.8.3/bin/unicorn:126:in `<top (required)>'
E, [2015-04-25T20:38:17.103658 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/bin/unicorn:23:in `load'
E, [2015-04-25T20:38:17.103780 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/bin/unicorn:23:in `<main>'
E, [2015-04-25T20:38:17.103901 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/bin/ruby_executable_hooks:15:in `eval'
E, [2015-04-25T20:38:17.104022 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/bin/ruby_executable_hooks:15:in `<main>'
E, [2015-04-25T20:38:17.104289 #1250] ERROR -- : listen loop error: Socket operation on non-socket - accept (Errno::ENOTSOCK)
E, [2015-04-25T20:38:17.104379 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:669:in `kgio_tryaccept'
E, [2015-04-25T20:38:17.104533 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:669:in `worker_loop'
E, [2015-04-25T20:38:17.104711 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:525:in `spawn_missing_workers'
E, [2015-04-25T20:38:17.104844 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:140:in `start'
E, [2015-04-25T20:38:17.104977 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/gems/unicorn-4.8.3/bin/unicorn:126:in `<top (required)>'
E, [2015-04-25T20:38:17.105107 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/bin/unicorn:23:in `load'
E, [2015-04-25T20:38:17.105235 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/bin/unicorn:23:in `<main>'
E, [2015-04-25T20:38:17.105333 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/bin/ruby_executable_hooks:15:in `eval'
E, [2015-04-25T20:38:17.105465 #1250] ERROR -- : /Users/me/.rvm/gems/ruby-2.2.0@project_name/bin/ruby_executable_hooks:15:in `<main>'
E, [2015-04-25T20:38:17.105794 #1250] ERROR -- : listen loop error: Socket operation on non-socket - accept (Errno::ENOTSOCK)

这台机器上有多个项目,但我认为没有一个在工作状态和损坏状态之间工作过。

做了运行一个OSX更新,在这一切都崩溃之前的早上骚扰了我一个星期。独角兽也在项目开始对我失败的那天更新。但是我已经尝试将 XCode 恢复到旧版本,并且我尝试将 Unicorn gem 锁定到 'working' 版本,并且它的 none 似乎有所不同。

我也试过指定一个不同的端口以防出现问题:bundle exec unicorn -p 4444,但无济于事。

感谢任何帮助。

可能需要重建此应用程序的 gemset。如果有的话,您将重新编译您的原生 gems。考虑到错误在 Unicorn 中发生得相当深,也许有一些优点。

查看:RVM Gemset 了解有关删除的信息

之后,继续bundle install。希望这能解决问题。