SocketException: Adresse bereits verwendet MONGODB

75

Ich fand diesen Fehler beim Versuch, Mongodb auszuführen. Ich installiere es über Homebrew. Bitte helfen

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$
Agung Maha
quelle

Antworten:

90

In dem Port, 27017der von verwendet wird, wird bereits ein Prozess ausgeführt mongodb. Entweder müssen Sie den Prozess in diesem Port stoppen oder es mit einer anderen Portnummer versuchen.

Versuchen mongod --port 27018

Sie können die Portnummer Ihrer Wahl ändern.

BEARBEITEN:

Sie können auch einfach alle laufenden Instanzen des Mongo-Servers stoppen, indem Sie sudo killall mongodwie von @Dassi Orleando in den Kommentaren erwähnt verwenden. Und Rennmongod

Tony Roczz
quelle
10
Gute Antwort, wir können die frühere Mongo-Instanz tatsächlich schließen, indem wir den Befehl drücken : sudo killall mongod.
Dassi Orleando
116

Sie können die vorherige Mongod- Instanz töten und die neue starten.

Um die vorherige Mongod-Instanz zu beenden, suchen Sie zunächst nach einer Liste von Aufgaben, die auf Ihrem Computer ausgeführt werden, indem Sie Folgendes eingeben:

sudo lsof -iTCP -sTCP:LISTEN -n -P

Suchen Sie nach mongod COMMAND und seiner PID und Typ,

sudo kill <mongo_command_pid>

Starten Sie nun Ihre Mongod-Instanz, indem Sie Folgendes eingeben:

mongod

Sie können sehen, dass MongoDB erfolgreich ausgeführt wird.

Balasubramani M.
quelle
2
Funktioniert bei mir! Gute Antwort!
Iegor Benzyk
2
Wahrscheinlich müsste geändert werden, um auf dem PC zu funktionieren, aber für Mac ist dies perfekt. Tnx
sprudeln
1
In meinem Fall (Centos 7 Mongo 4.0.10) Der ausgeführte Dienst war der eigentliche Mongo-Daemon, und das Beenden des Dienstes verursachte nur ein anderes Problem. Ich musste nur den Befehl 'mongo' anstelle von 'mongod' verwenden
Roy Toledo
Dies ist eine viel bessere Antwort als die akzeptierte
Serdarsenay
Erstaunliche Antwort. Ich wünschte, ich könnte dich zweimal positiv bewerten. :)
AllJs
6

wenn Sie Mongodb Version 4 verwenden. *

In den Standardeinstellungen sollte ein "db" -Ordner "/ data / db" mit der erforderlichen Berechtigung vorhanden sein.

Um dies zu überprüfen, wurde der MongoDB-Dienst gestartet

brew services list

Wenn nicht, dann laufen

brew services start mongodb

Führen Sie Mongo anstelle von Mongod

sh6210
quelle
Vielen Dank. In meinem Fall (Centos 7 Mongo 4.0.10) war das alles, was es brauchte.
Roy Toledo
6

Zusammenfassung andere ( @Tony Roczz, @Balasubramani M) Antwort hier:

Ursache

Error: Failed to set up listener: SocketException: Address already in use

meint:

  • zuvor haben mongodb ausgeführt
    • Verwenden Sie wahrscheinlich den Standardport27017

Lösung

(meistens) töten und neu starten mongod

töte mongod

Zwei Methoden:

  • benutze killall
    • killall mongod
  • durch PID töten
    • Finden Sie Mongod PID
      • Methode 1: ps aux | grep mongod
      • Ausgabe kann so aussehen: limao 425 ... /usr/local/opt/mongodb-community/bin/mongod --config /usr/local/etc/mongod.conf
      • Methode 2: lsof -iTCP -sTCP:LISTEN -n -P
      • Ausgabe kann so aussehen: mongod 425 limao .. TCP 127.0.0.1:27017 (LISTEN)
    • durch PID töten: kill -9 425

Starten Sie Mongod neu

  • Meistens: mongod
  • ein Sonderfall
    • brew services start mongodb-community
      • für die Installation der Community-Version auf dem Mac von: brew install mongodb-community

(für einige Leute) laufen mit einem anderen Port

  • mit einem anderen Port ausführen: mongod --port 27018
    • Nur für diejenigen, die mehrere Mongod-Server gleichzeitig ausführen möchten

Zusätzliche Anmerkung

Welchen Port benutzt der laufende Mongodb?

 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)

kann sehen, 27017ist aktuell laufender Mongodb-Port.

wie man überprüft / sicherstellt, dass mongod läuft

  • Mongod Status überprüfen:
    • ps aux | grep mongod
      • Ausgabe kann mongodService sehen
    • brew services list
      • wenn installiert von brewund starten vonbrew
Crifan
quelle
4

Fahren Sie zunächst den laufenden Server herunter, indem Sie:

mongod --shutdown

Dann renne:

sudo mongod
Bisma
quelle
Bitte setzen Sie Ihren Code in codeTags. Ich nehme an du meinst mongodb --shutdown?
pythonic833
4

Ich habe es gelöst, indem ich den folgenden Befehl in die Befehlszeile eingefügt habe, um Mongos Server zu schließen.

sudo pkill -f mongod

"sudo" (Super User Do) führt die Befehlsadministratorberechtigungen aus und fragt Sie nach Ihrem Benutzerkennwort

August Marí
quelle
4

Nach dem Ausführen der folgenden Befehle:

sudo lsof -iTCP -sTCP:LISTEN -n -P

Suchen Sie nach mongod COMMAND und seiner PID und Typ,

sudo kill <mongo_command_pid>

Beim Neustart von mongod schlägt der Fehler "SocketException: Adresse wird bereits verwendet MONGODB" immer noch fehl.

Der Server wurde gestern neu gestartet und dann passierte dies.

jtvdw
quelle
1

Stellen Sie sicher, dass der Fehler vom Port stammt. Wenn Sie macos Catalina verwenden, wird ein Problem für ~ / data / db gemeldet, das dies ebenfalls verursacht.

Jasmeet Singh Chhabra
quelle
Ja, ich habe ein Problem, bei dem ich sicher bin, dass Mongo nicht läuft, aber immer noch diesen Fehler erhält
Dylan
1

Wenn Ihr Mongod-Prozess bereits fehlgeschlagen ist, entfernen Sie einfach die .sock-Datei in / tmp:

Mein Mongod ist bereits unten, erscheint also nicht in:

lsof -iTCP -sTCP:LISTEN -n -P

Der Fehler war:

[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 der Protokolldatei (/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

Finden Sie also für die Steckdosenverriegelung:

ls -ltra /tmp|grep .sock

Und entfernen Sie es einfach (in der Produktionsumgebung mit Vorsicht):

rm -f mongodb-26002.sock

G-Glück!

IlsonMarins
quelle
0

Nur dieser einzige Befehl

sudo pkill -f mongod

Khushwant Kodecha
quelle
1
Dies ist dasselbe wie in der Antwort von Agustín Marí. Es sei denn, Ihre Antwort wird vor dem Befehl fett gedruckt.
Scratte
0

Dies mag offensichtlich klingen, aber Sie sollten überprüfen, ob Mongodb bereits ausgeführt wird. Anstatt zuerst die Datenbank durch Ausführen zu starten:

sudo mongod

Versuchen Sie es direkt:

mongo
AD Rai
quelle