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$

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


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.


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


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

4

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

mongod --shutdown

Dann renne:

sudo mongod

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


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.


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.


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!


0

Nur dieser einzige Befehl

sudo pkill -f mongod


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.