什么是Rack-"no acceptor"错误?

8
试图运行我的config.ru时,我遇到了一个奇怪的错误,无法调试,称为“无接受者”错误。 完整的错误信息如下:
eventmachine.rb:572:in `start_tcp_server': no acceptor (RuntimeError)

有人知道这个错误是什么意思吗?谢谢。

3个回答

12

正如 @Fivell 所说,我认为问题在于你还有一个之前的 thin 实例仍在运行。但我建议不要在另一个端口上启动它,而是杀死之前的实例。像这样做应该可以解决问题(我在这里重新创建了这个问题,所以这是我端上的真实输出):

telemachus caps $ ps ax | grep ruby
  153   ??  S      7:52.18 ruby /usr/local/bin/djsd
15801   ??  S      0:00.40 ruby caps.rb  # this is our problem, get it's PID
15973 s000  S+     0:00.00 grep ruby

telemachus caps $ kill -9 15801 # thin needs -9 - hard to kill
telemachus caps $ ps ax | grep ruby
  153   ??  R      7:52.86 ruby /usr/local/bin/djsd
16057 s000  S+     0:00.00 grep ruby

根据您启动应用程序的方式,您可能需要 grep 不同的内容(例如,如果您使用了 shotgunrackup)。


是的,出问题的是服务器,重启我的电脑解决了它。 - beakr

1

我认为问题在于使用的端口已被绑定(可能是先前启动了您的应用程序)。尝试更改端口。

rackup config.ru -p port    #default port is 9292 change to something else

或者如果您使用轻量级

thin start  -p port -a 0.0.0.0  -R config.ru #default port is 8080 change to something else

我已经多次看到这个确切的问题,当人们简单地关闭终端窗口而不使用“CTRL-C”来停止正在运行的thin服务器时。如果你关闭了窗口,该进程似乎会变成僵尸进程。 - Telemachus
我个人几天前刚做了这件事 =) - Fivell

0

尽管没有僵尸进程并且端口未绑定,但我仍然遇到了这个错误。

这个可以正常工作:

thin -p9292 start

但这并不:

rackup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接