Will Sewell
Will Sewell

Reputation: 2643

EventMachine: "`start_tcp_server': no acceptor (port is in use or requires root privileges)"

When I try and run the server with EventMachine::run I keep getting the error saying that the port is in use. This started ever since I ran the server in the background with the command nohup.

I am pretty sure I have killed the process I started:

I also thought it could be the lack of me being the root user, so tried it as root to no avail.

I have also restarted the server.

Please let me know if there's anything else I can try.

Note: this is on debian.

Upvotes: 34

Views: 31454

Answers (6)

Sofest
Sofest

Reputation: 11

Maybe it will save someone's time: In my case rails server won't start on any port returning the same error. Event after restarting my machine. Other servers that refer to localhost didn't work as well.

The problem was in my /etc/hosts file that somehow became empty. After restoring it to default state the problem was solved.

Upvotes: 1

Ifelere Bolaji
Ifelere Bolaji

Reputation: 94

In my case it was just internet connection issues.

Upvotes: -1

Oleksii Kyslytsyn
Oleksii Kyslytsyn

Reputation: 2426

Running on free port solves the problem by either:

rails s -p 3001

or

ruby script/rails server webrick -e production -p 3001

or

ruby script/rails server thin -e production -p 3001

Upvotes: -1

Hanmaslah
Hanmaslah

Reputation: 746

Had the same problem.

Ran lsof -i :3000 (3000 is the port I ran it on).

I found out that the port was being used by ruby. I killed the process using kill -9 *pid*.

When I ran lsof -i :3000 again, nothing showed up.

I then ran rails s and everything works fine now.

Upvotes: 51

Amol Udage
Amol Udage

Reputation: 3075

It happens when you didn't stop your server correctly, for example when suspended with Ctrl+Z or running the server twice.

If stopped by Ctrl+Z, this works for me:

Get the running process with:

$ ps ax | grep rails
18192 pts/28 Sl+  0:05 /home/admin/.rvm/rubies/ruby-2.1.2/bin/ruby bin/rails c
20496 pts/23 Tl 0:08 /home/admin/.rvm/rubies/ruby-2.1.2/bin/ruby bin/rails s
20919 pts/23 S+ 0:00 grep --color=auto rails

And then kill the process in which rails server running:

$ kill 20496

If it's not closed after a few seconds you can try to "force" close with with -9 (but this prevents any cleanup from Rails):

$ kill -9 20496

Now you can start the server again:

$ rails s

Upvotes: 26

Will Sewell
Will Sewell

Reputation: 2643

I have finally figured it out: it was actually the IP address I was binding to that was incorrect!

So essentially it is a very misleading error message, and if you get it, check the IP address too.

Upvotes: 21

Related Questions