【问题标题】:'listen loop error: Socket operation on non-socket' when trying to run Unicorn'listen loop error: Socket operation on non-socket' 尝试运行 Unicorn 时
【发布时间】:2015-05-02 01:41:17
【问题描述】:

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

该项目使用 rake 任务来启动服务器,但我将问题缩小到只是试图让 Unicorn 运行。这是我运行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 锁定到“工作”版本,但似乎没有任何区别。

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

感谢任何帮助。

【问题讨论】:

    标签: ruby-on-rails ruby unicorn


    【解决方案1】:

    可能想要重建此应用程序的 gemset。如果有的话,您将重新编译您的原生 gem。考虑到 Unicorn 内部发生的错误非常深,也许有一些优点。

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

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

    【讨论】:

    • 谢谢@cs44!你是一个救生员。备份并运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 2012-10-26
    相关资源
    最近更新 更多