SocketException: Address already in use MONGODB
MongodbMacosHomebrewMongodb Problem Overview
i found this error when trying to run mongodb. I install it via homebrew. Please assist
Agungs-MacBook-Pro:~ agungmahaputra$ mongod
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] MongoDB starting : pid=5189 port=27017 dbpath=/data/db 64-bit host=Agungs-MacBook-Pro.local
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] db version v3.6.0
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] git version: a57d8e71e6998a2d0afde7edc11bd23e5661c915
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2n 7 Dec 2017
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] allocator: system
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] modules: none
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] build environment:
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] distarch: x86_64
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] target_arch: x86_64
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] options: {}
2017-12-26T15:31:15.911+0700 E STORAGE [initandlisten] Failed to set up listener: SocketException: Address already in use
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] now exiting
2017-12-26T15:31:15.911+0700 I CONTROL [initandlisten] shutting down with code:48
Agungs-MacBook-Pro:~ agungmahaputra$
Mongodb Solutions
Solution 1 - Mongodb
You can kill the previous mongod instance and start the new one.
To kill the previous mongod instance, first search for a list of tasks running on your machine by typing,
sudo lsof -iTCP -sTCP:LISTEN -n -P
Search for mongod COMMAND and its PID and type,
sudo kill <mongo_command_pid>
Now start your mongod instance by typing,
mongod
You can see MongoDB running successfully.
Solution 2 - Mongodb
You already have a process running in the port 27017
which is used by mongodb
. So either you need to stop the process in that port or try with different port number.
Try mongod --port 27018
You can change the port number of your choice.
EDIT:
You can also just stop all the running instances of mongo server using
sudo killall mongod
as mentioned by @Dassi Orleando in the comments.
And run mongod
Solution 3 - Mongodb
Summary other(@Tony Roczz
, @Balasubramani M
) answer to here:
Root Cause
error: Failed to set up listener: SocketException: Address already in use
means:
- previously have run mongodb
- probably use default port
27017
- probably use default port
Solution
mongod
(most case) kill and restart kill mongod
two method:
- use killall
killall mongod
- kill by PID
- find mongod PID
- method 1:
ps aux | grep mongod
- output can see like this:
limao 425 ... /usr/local/opt/mongodb-community/bin/mongod --config /usr/local/etc/mongod.conf
- output can see like this:
- method 2:
lsof -iTCP -sTCP:LISTEN -n -P
- output can see like this:
mongod 425 limao .. TCP 127.0.0.1:27017 (LISTEN)
- output can see like this:
- method 1:
- kill by PID:
kill -9 425
- find mongod PID
re-start mongod
- most case:
mongod
- some special case
brew services start mongodb-community
- for install community version in Mac by:
brew install mongodb-community
- for install community version in Mac by:
(for some people) run with another port
- run with another port:
mongod --port 27018
- only for those want to run multiple mongod server same time
Additional Note
which port the running mongodb is using?
lsof -iTCP -sTCP:LISTEN -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 425 limao 10u IPv4 0xab744305e75263cf 0t0 TCP 127.0.0.1:27017 (LISTEN)
can see 27017
is current running mongodb port.
how to check / make sure mongod is running
- check mongod status:
ps aux | grep mongod
- output can see
mongod
service
- output can see
brew services list
- if installed by
brew
and start bybrew
- if installed by
Solution 4 - Mongodb
if you're using mongodb version 4.*
in default settings, there should be a "db" folder "/data/db" having the necessary permission.
to check it the MongoDB service started
brew services list
if not then run
brew services start mongodb
run mongo instead of mongod
Solution 5 - Mongodb
I solved it pasting the command below into the command line in order to close mongo's server.
sudo pkill -f mongod
"sudo" (Super User Do) runs the command admin permissions, so it will ask you for your user password
Solution 6 - Mongodb
First, shutdown the running server using:
mongod --shutdown
Then run:
sudo mongod
Solution 7 - Mongodb
After running this commands below:
sudo lsof -iTCP -sTCP:LISTEN -n -P
Search for mongod COMMAND and its PID and type,
sudo kill <mongo_command_pid>
And restarting mongod, it still fails with the same error "SocketException: Address already in use MONGODB".
Server was restarted yesterday and then this happened.
Solution 8 - Mongodb
Just this single command
sudo pkill -f mongod
Solution 9 - Mongodb
Make Sure the error is of the port , if using macos catalina there is a reported issue for ~/data/db which also causes this.
Solution 10 - Mongodb
If your mongod process is already down, just remove the .sock file in /tmp:
My mongod is already down, so does not appears in:
lsof -iTCP -sTCP:LISTEN -n -P
The error was:
[root@ol7db19c1 ~]# mongod -f /etc/csrs_2.conf
about to fork child process, waiting until server is ready for connections.
forked process: 6721
ERROR: child process failed, exited with error number 48
To see additional information in this output, start without the "--fork" option.
In the log file (/var/mongodb/db/csrs2.log):
2020-07-05T16:03:59.354-0300 E STORAGE [initandlisten] Failed to set up listener: SocketException: Address already in use
So, find for the socket locking:
ls -ltra /tmp|grep .sock
And just remove it (do it with caution in production environment):
rm -f mongodb-26002.sock
G-luck!
Solution 11 - Mongodb
This may sound obvious but you should check if mongodb is already running. So instead of first starting the the DB by running:
sudo mongod
Try directly running:
mongo