【问题标题】:Address already in use - bind(2) for "0.0.0.0" port 3000 (Errno::EADDRINUSE)地址已在使用中 - bind(2) 用于“0.0.0.0”端口 3000 (Errno::EADDRINUSE)
【发布时间】:2016-05-12 23:49:54
【问题描述】:

首先,我知道this error has already been listed here,但问题不同。

我有一个 Rails 4 应用程序,以前在 Puma 上运行。

然后,我的一位朋友在开发该应用程序,并建议我们改用 Foreman。

所以,我曾经在终端中使用rails s 在本地运行应用程序。

现在,我应该用foreman start 来做。

问题是,几乎每次我尝试启动应用程序时,都会收到以下错误:

foreman start
08:42:28 web.1  | started with pid 3398
08:42:28 web.1  | [3398] Puma starting in cluster mode...
08:42:28 web.1  | [3398] * Version 2.13.4 (ruby 2.2.1-p85), codename: A Midsummer Code's Dream
08:42:28 web.1  | [3398] * Min threads: 5, max threads: 5
08:42:28 web.1  | [3398] * Environment: development
08:42:28 web.1  | [3398] * Process workers: 2
08:42:28 web.1  | [3398] * Preloading application
08:42:31 web.1  | [3398] * Listening on tcp://0.0.0.0:3000
08:42:31 web.1  | /Users/TXC/.rvm/gems/ruby-2.2.1/gems/puma-2.13.4/lib/puma/binder.rb:231:in `initialize': Address already in use - bind(2) for "0.0.0.0" port 3000 (Errno::EADDRINUSE)
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/gems/puma-2.13.4/lib/puma/binder.rb:231:in `new'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/gems/puma-2.13.4/lib/puma/binder.rb:231:in `add_tcp_listener'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/gems/puma-2.13.4/lib/puma/binder.rb:98:in `block in parse'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/gems/puma-2.13.4/lib/puma/binder.rb:84:in `each'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/gems/puma-2.13.4/lib/puma/binder.rb:84:in `parse'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/gems/puma-2.13.4/lib/puma/runner.rb:119:in `load_and_bind'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/gems/puma-2.13.4/lib/puma/cluster.rb:304:in `run'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/gems/puma-2.13.4/lib/puma/cli.rb:215:in `run'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/gems/puma-2.13.4/bin/puma:10:in `<top (required)>'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/bin/puma:23:in `load'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/bin/puma:23:in `<main>'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `eval'
08:42:31 web.1  |   from /Users/TXC/.rvm/gems/ruby-2.2.1/bin/ruby_executable_hooks:15:in `<main>'
08:42:31 web.1  | exited with code 1
08:42:31 system | sending SIGTERM to all processes

我该如何解决这个问题?

————

更新:我也尝试了以下两种方法,as recommended here

ps aux | grep rails
3547   0,0  0,0  2434840    752 s000  S+    8:48     0:00.00 grep rails

但是没有ruby bin/rails server

还有:

lsof -wni tcp:3000
COMMAND PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ruby    808  TXC    8u  IPv4 0x4f6da234a6116dab      0t0  TCP *:hbci (LISTEN)
ruby    809  TXC    8u  IPv4 0x4f6da234a6116dab      0t0  TCP *:hbci (LISTEN)
ruby    810  TXC    8u  IPv4 0x4f6da234a6116dab      0t0  TCP *:hbci (LISTEN)

但我不确定我应该如何处理。

每次我想在本地启动应用程序时都应该重新启动计算机吗?

【问题讨论】:

  • 如果您运行netstat -na,您是否看到使用端口 3000 的其他内容?
  • 感谢您的评论。这对我来说很新,所以请原谅我的愚蠢问题:我到底应该看哪里?该命令生成了大约 200 行信息。
  • 基于您使用lsof 的更新,ruby 正在运行,但它是“无头的”,因为您无法从命令行控制它。您需要先停止使用端口 3000 的进程,然后才能启动新进程。试试killall -9 ruby 然后启动你的应用程序。
  • 像 Windows 一样重启它
  • 我不会将其添加为可接受的答案 ;)

标签: ruby-on-rails ruby-on-rails-4 localhost puma foreman


【解决方案1】:

如果您使用的是 Puma,请运行 ps aux | grep puma

PID   TT  STAT      TIME COMMAND
4662   0.0  0.1  4601556   8820   ??  S    10:48am   1:10.37 puma: cluster worker 1: 4395 [my-app]
4661   0.0  0.1  4882676  10300   ??  S    10:48am   2:14.49 puma: cluster worker 0: 4395 [my-app]
4395   ??  S      0:16.88 puma 3.12.1 (tcp://0.0.0.0:3000) [my-app]

然后杀死那些 pid。

kill -9 4395 4661 4662

【讨论】:

  • 甚至更快pkill -9 -f puma-f 匹配完整条目,而不仅仅是进程名称。可能不需要)
【解决方案2】:

我也有同样的问题。 经过小调查发现ntop

ntop - 在网络浏览器中显示网络使用情况

  1. netstat -tulpn

    tcp 0 0 0.0.0.0:3000 0.0.0.0:* 听-

  2. nmap 127.0.0.1

    3000/tcp 打开 ppp

【讨论】:

    【解决方案3】:

    This code 将自动为您修复它

    此代码将自动为您修复它

    https://github.com/pailoro/rails_server_killer

    一个用于解决 Rails 服务器上“地址已在使用”问题的 ruby​​ 脚本

    在终端上运行它:

    ruby rails_server_killer.rb

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 2015-09-30
      • 2021-02-11
      • 2021-02-26
      • 1970-01-01
      相关资源
      最近更新 更多