Адрес уже используется - bind(2) для порта "0.0.0.0" 3000 (Errno::EADDRINUSE)

Прежде всего, я знаю, что эта ошибка уже была перечислена здесь, но вопрос был другим.

У меня есть приложение 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

Как я могу это исправить?

-----

ОБНОВЛЕНИЕ: я также попробовал обе вещи ниже, как рекомендовано здесь:

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)

но я не уверен, что я должен делать с этим.

Я должен перезагрузить компьютер каждый раз, когда я хочу запустить приложение локально?

5 ответов

Если вы используете 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]

Затем убейте эти pids.

kill -9 4395 4661 4662

Для меня решение было довольно простым. Но имейте в виду, что (как говорит команда) закрывает ВСЕ экземпляры ruby. Вы можете решить это более мелко, чем это, например, с помощью стратегии, как вы упомянули .

      killall ruby

Все остальное мне не помогло:

      killall rails
# -> rails: no process found
killall puma
# -> puma: no process found

Вы также можете рассмотреть эти, возможно, связанные вопросы и ответы:

У меня такая же проблема. После небольшого расследования был найден нтоп

ntop - отображать использование сети в веб-браузере

  1. netstat -tulpn

    tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN -

  2. nmap 127.0.0.1

    3000 / TCP открыть PPP

Этот код автоматизирует процесс его исправления для вас

Этот код автоматизирует процесс его исправления для вас

https://github.com/pailoro/rails_server_killer

сценарий ruby ​​для устранения проблемы "Адрес уже используется" на сервере rails

запустите его на терминале с помощью:

рубиновый rails_server_killer.rb

Просто удалите файл tmp / pids /server.pid и запустите свой сервер.

Другие вопросы по тегам