webentwicklung-frage-antwort-db.com.de

MongoDB kann nicht als Dienst gestartet werden

Ich habe seit einigen Monaten für MongoDB entwickelt und möchte es als Dienst auf meinem Windows 7 Enterprise-Computer installieren. Das Folgende ist der Befehl, den ich zur Erstellung des Dienstes ausgeführt habe:

"D:\Milvia Systems\Development\MongoDB\mongod.exe" --logpath "D:\Milvia Systems\Development\MongoDB\logs\DBLog.log" --logappend --dbpath "D:\Milvia Systems\Development\MongoDB\db" -vvv --reinstall

Immer, wenn ich Net Start "MongoDB" oder die Service Control Panel verwende, erhalte ich folgende Fehlermeldung:

Fehler 1053: Der Dienst reagierte nicht auf den Start oder die Steuerung zeitnah anfragen.

Umgebung: Windows 7 Enterprise 64bit MongoDB: 1.6.3 pdfile Version 4.5

58
Martin Reich

Haben Sie Ihre Anmeldung überprüft, um das eigentliche Problem zu sehen? 

Ich empfehle, die Mongo-Installation nach c:\mongodb zu extrahieren. 

Erstellen Sie die Verzeichnisse c:\mongodb\logs und c:\mongodb\data\db

Durchsuchen Sie dann das Verzeichnis c:\mongodb\bin und führen Sie Folgendes aus, um den Dienst zu entfernen (falls Sie ihn installiert haben!):

mongod --remove

Installieren Sie dann den Dienst und geben Sie die Protokoll- und Datenverzeichnisse an:

mongod --logpath c:\mongodb\logs\mongo.log --dbpath c:\mongodb\data\db --directoryperdb --install

Wenn beim Starten des Diensts ein Problem auftritt, sollten Sie den Grund in der angegebenen Protokolldatei finden. 

Mehr Infos hier .

133
Ciaran Archer

Wenn Sie keine absoluten Dateipfade für das Datenverzeichnis oder das Protokollverzeichnis angegeben haben, wird der gleiche Windows-Fehler, jedoch keine Protokolldatei angezeigt.

Ich habe die Informationen aus "MongoDB-Dienst unter Windows 7 installieren" verwendet, auf Webiyo gepusht , um die registrierten Dienstargumente zu korrigieren:

  1. Laden Sie MongoDB herunter und extrahieren Sie es in das Laufwerk C: \.
  2. Fügen Sie im Verzeichnis "C:\mongodb165" die Unterverzeichnisse "data" und "logs" hinzu.
  3. Fügen Sie unter "C:\mongodb165\logs\mongolog.txt" einen Protokolldateinamen "mongolog.txt" hinzu.
  4. Ändern Sie das Verzeichnis in "C:\mongodb165\bin".
  5. Führen Sie den folgenden Befehl aus:

    mongod --install --rest –master –logpath=C:\mongodb165\logs\mongolog.txt
    
  6. Öffnen Sie den Registrierungseditor (regedit.exe), und wechseln Sie zu HKEY_LOCAL_MACHINE → SYSTEM → CurrentControlSet → Services.

  7. Suchen Sie den MongoDB-Schlüssel und setzen Sie den Wert "ImagePath" auf:

    C:\mongodb165\bin\mongod --service  --rest  --master  --logpath=C:\mongodb165\logs\mongolog.txt  --dbpath=C:\mongodb165\data
    
  8. Speichern Sie die Änderungen in der Registrierung und beenden Sie den Registrierungseditor.

  9. Öffnen Sie ComponentServices, klicken Sie auf "Services (Local)" und suchen Sie den MongoDB-Service. Starten Sie es.
  10. Überprüfen Sie unter der URL http: // localhost: 28017/ , ob MongoDB Statistiken zurückgibt.
17
Stanley.Goldman

Ich habe gerade das gleiche Problem auf meinem Windows 7-Rechner festgestellt. Ich habe die Anweisungen in MongoDBs Docs für die Installation befolgt, aber ich würde "net start MongoDB" nicht ausführen lassen, es sei denn, ich befand mich in "C: \". Ich wollte nicht zurückkehren und MongoDB erneut installieren, um den Anweisungen des Webiyo - Links zu folgen, auf den oben verwiesen wurde. Wenn Sie MongoDB bereits gemäß den entsprechenden Dokumenten installiert haben und "net start MongoDB" von Ihrem Projektverzeichnis aus ausführen möchten: 

Gehen Sie zu HKEY_LOCAL_MACHINE> SYSTEM> CurrentControlSet> Services> MongoDB 

Doppelklicken Sie auf ImagePath unter der Spalte Name 

Fügen Sie den folgenden ImagePath ein (bearbeiten Sie das Verzeichnis und die Namen entsprechend Ihren Anforderungen): 

C:\mongodb\bin\mongod.exe --service  --rest  --master  --logpath=C:\mongodb\log\mongolog.txt  --dbpath=C:\mongodb\data\db --config C:\mongodb\mongod.cfg

Wenn Sie diesen ImagePath-Wert direkt kopieren und sich der Ordner "data" im Verzeichnis mongodb anstelle von C:\befindet, fügen Sie der Datei "mongod.cfg" die folgende Zeile hinzu: dbpath=C:\mongodb\data\db

Nachdem ich dies ausgeführt habe, wenn ich "net stop MongoDB" starte, erhalte ich die Meldung "Systemfehler 109 ist aufgetreten. Die Pipe wurde beendet." Sie können es auch sehen. Diese Nachricht wurde unter jira.mongodb.org ausführlich erörtert.

Um Ihnen die Zeit zu geben, die ganze Hin- und Her-Diskussion zu lesen, fasst Tad Marshalls diese Ausgabe zusammen: 

"... es funktionierte in 2.1.0 einwandfrei; spätere Änderungen brachen es erneut. Aber ja, Sie erhalten diese Fehlermeldung im aktuellen Code.

Die Erklärung ist, dass mongod.exe einen Callback-Thread beendet, der vom Windows-Dienststeuerungs-Manager erstellt wurde, wenn er uns wegen "net stop mongodb" aufruft und dadurch die RPC-Pipe zerstört wird, mit der der Callback-Thread erstellt wurde. Wir müssen unsere Exit-Logik neu organisieren, um dies zu vermeiden.

Die Fehlermeldung ist der einzige wirkliche Effekt dieses Problems. Wir beenden das Kommando, gehen sauber zurück und informieren den Windows-Dienststeuerungs-Manager darüber, dass wir angehalten wurden. Der "net" -Befehl zeigt jedoch eine Fehlermeldung an, weil wir nicht wie erwartet von dem RPC-Aufruf zurückgekehrt sind. "

11
Donald Gary

Ich habe diesen Befehl ausgeführt:

C:\MongoDB\Server\3.4\bin>net start MongoDB

Und bekam diese Nachricht:

Der Dienst reagiert nicht auf die Steuerfunktion. Weitere Hilfe ist verfügbar durch Eingabe von NET HELPMSG 2186.

Nach einigen Versuchen und Fehlern bemerkte ich, als ich dem Tutorial folgte, dass es mich bat, meine Datei mongod.conf zu benennen, aber der Befehl versuchte auf mongod.cfg zu verweisen.

Sobald ich diesen Namen korrigiert und die Befehle erneut ausgeführt habe, 

C:\MongoDB\Server\3.4\bin>sc.exe delete MongoDB
[SC] DeleteService SUCCESS

C:\MongoDB\Server\3.4\bin>sc.exe create MongoDB binPath= "\"C:\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
[SC] CreateService SUCCESS

C:\MongoDB\Server\3.4\bin>net start MongoDB
The MongoDB service is starting....
The MongoDB service was started successfully.

Der Dienst lief einwandfrei.

5
Irshad Khan

An andere Personen, die möglicherweise dasselbe Problem unter Windows Server 2012 haben:

Ich habe gerade das gleiche Problem mit Mongo 3.0.3 unter Windows Server 2012. Ich bin kein Systemadministrator, daher weiß ich nicht, was sie für sc.exe geändert haben. Ich muss benutzen 

sc.exe create MongoDB binPath= "C:\mongodb\bin\mongod.exe --service --config=C:\mongodb\mongod.cfg" DisplayName= "MongoDB" start= "auto"

Dies ist ohne\"\" sowohl für binäre als auch für Konfigurationsdateipfade im Vergleich zu dem auf ihrer Website.

5
Chen

Dies sind die Schritte, die ich befolgt habe, um MongoDB unter Windows 7 zu installieren

  1. laden Sie die MSI-Datei von der Mongodb-Site herunter -> https://www.mongodb.com/download-center?jmp=nav#community und führen Sie sie aus

  2. Wenn Sie Ihre mondoDb heruntergeladen haben (in der Regel im Ordner c: Ordner Programme), wechseln Sie zu diesem Ordner. Wo sich auch der bin-Ordner in diesem Ordner befindet, erstellen Sie Ihren data-Ordner und Ihren log-Ordner.

3.In Ihrem Datenordner erstellen Sie Ihren db-Ordner.

Die Struktur würde in etwa so aussehen

  1. Öffnen Sie nun den Befehl Eingabeaufforderung als Administrator.

  2. Ändern Sie Ihren Dateipfad und geben Sie den bin-Ordner ein (in diesem Fall wäre dies c> Programmdateien> MongoDB> bin>)

  3. Geben Sie den folgenden Befehl ein: mongod --directoryperdb --dbpath "C:/Programme\MongoDB\data" --logpath "C:\Programme\MongoDB\log\mongo.log" --logappend --rest --Installieren

  4. Dies würde den Protokollpfad und den Datenbankpfad festlegen. Führen Sie zuletzt net start MongoDB aus. Hoffe das hilft.

4
Sana Jahan

Überprüfen Sie, ob Ihre Datei mongod.cfg Registerkarten enthält. Das Entfernen von Tabs löste es für mich!

3
user2305729

Für MongoDB 3.0 müssen Sie Folgendes in der Konfigurationsdatei einstellen.

logpath=E:\mongoDBdata\log\mongoDB.log
dbpath=E:\mongoDBdata\db

Der Logpfad sollte mit einer Datei und nicht mit einem Ordner enden.

3
codin

Folgende Arbeiten mit MongoDB 3.6.0

Stellen Sie sicher, dass Sie über folgende Ordner verfügen:

  • C:\mongodb\data
  • C:\mongodb\data\db

Dann brauchen Sie nur noch folgende Befehle:

  • mongod --directoryperdb - dbpath C:\mongodb\data\db --logpath C:\mongodb\log\mongo.log --logappend --service --install
  • net Start MongoDB
  • mongo
3
Sumeet

Eine andere Möglichkeit, dass dies fehlschlagen kann, ist, wenn das Konto, unter dem der Dienst ausgeführt wird, keine Schreibberechtigung für das Datenverzeichnis hat. 

In diesem Fall kann der Dienst keine Sperrdatei erstellen.

Der Mongod-Dienst verhält sich in dieser Situation schlecht und startet in einer Schleife einen Prozess, der sofort eine unbehandelte Ausnahme auslöst, abstürzt usw. Die Protokolldatei wird bei jedem Start des Prozesses neu erstellt um den Fehler zu sehen.

der Standardbenutzer für Windows-Dienste wäre localhost\system. Die Lösung besteht also darin, sicherzustellen, dass dieser Benutzer in Ihr Datenbankverzeichnis schreiben oder den Dienst als einen anderen Benutzer starten kann, der dies kann.

2
A. Lowe

stellen Sie sicher, dass Sie die Befehlszeile mit den Rechten "Als Administrator ausführen" mit der rechten Maustaste öffnen, bevor Sie die gesamten Mongod-Dinge eingeben

2
user7537535

Zumindest für Version 2.6 müssen Sie die Ordner/data/db/und/log/erstellen, auf die mongo.cfg verweist. MongoDB macht dies selbst nicht und gibt diesen Fehler als Antwort aus, wenn es als Dienst ausgeführt wird. 

2
Ron Newcomb

Meine mongod.cfg-Datei hatte die folgenden letzten zwei Zeilen:

#snmp:
mp:

Ich habe keine Ahnung, warum es einen mp gibt: drin. Aber als ich den Bildpfad manuell ausgeführt habe

C:\mongodb\bin\mongod.exe --config "C:\mongodb\bin\mongod.cfg" --service

beim 

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MongoDB

Ich habe

c:\mongodb\bin>mongod /?C:\mongodb\bin\mongod.exe --config "C:\mongodb\bin\mongod.cfg" --service
Unrecognized option: mp
try 'mongod --help' for more information

Also habe ich es kommentiert und der Dienst wurde ohne Probleme gestartet.

1
JL_SO

Nachdem ich eine halbe Stunde mit dem Debuggen verbracht hatte, fand ich schließlich heraus, dass vor dem "rest" -Attribut ein einzelner Strich steht.

 mongodb as service

1
Hassan Rahman

Wenn Sie in den Dienstdetails nachsehen, können Sie feststellen, dass der Befehl zum Starten des Dienstes etwa wie folgt lautet:

"C:\Program Files\MongoDB\bin\mongod" --config  C:\Program Files\MongoDB\mongod.cfg  --service 

Das MongoDB-Team hat vergessen, den " um die --config-Option hinzuzufügen. Bearbeiten Sie einfach die Registrierung, um sie zu korrigieren, und es wird funktionieren.

0
jlguenego

Denken Sie daran, die Datenbank zu erstellen, bevor Sie den Dienst starten

C:\>"C:\Program Files\MongoDB\Server\3.2\bin\mongod.exe" --dbpath d:\MONGODB\DB
2016-10-13T18:18:23.135+0200 I CONTROL  [main] Hotfix KB2731284 or later update is installed, no need to zero-out data files
2016-10-13T18:18:23.147+0200 I CONTROL  [initandlisten] MongoDB starting : pid=4024 port=27017 dbpath=d:\MONGODB\DB 64-bit Host=mongosvr
2016-10-13T18:18:23.148+0200 I CONTROL  [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2016-10-13T18:18:23.149+0200 I CONTROL  [initandlisten] db version v3.2.8
2016-10-13T18:18:23.149+0200 I CONTROL  [initandlisten] git version: ed70e33130c977bda0024c125b56d159573dbaf0
2016-10-13T18:18:23.150+0200 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1p-fips 9 Jul 2015
2016-10-13T18:18:23.151+0200 I CONTROL  [initandlisten] allocator: tcmalloc
2016-10-13T18:18:23.151+0200 I CONTROL  [initandlisten] modules: none
2016-10-13T18:18:23.152+0200 I CONTROL  [initandlisten] build environment:
2016-10-13T18:18:23.152+0200 I CONTROL  [initandlisten]     distmod: 2008plus-ssl
2016-10-13T18:18:23.153+0200 I CONTROL  [initandlisten]     distarch: x86_64
2016-10-13T18:18:23.153+0200 I CONTROL  [initandlisten]     target_Arch: x86_64
2016-10-13T18:18:23.154+0200 I CONTROL  [initandlisten] options: { storage: { dbPath: "d:\MONGODB\DB" } }
2016-10-13T18:18:23.166+0200 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=8G,session_max=20000,eviction=(threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),statistics_log=(wait=0),
2016-10-13T18:18:23.722+0200 I NETWORK  [HostnameCanonicalizationWorker] Starting hostname canonicalization worker
2016-10-13T18:18:23.723+0200 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory 'd:/MONGODB/DB/diagnostic.data'
2016-10-13T18:18:23.895+0200 I NETWORK  [initandlisten] waiting for connections on port 27017

Dann können Sie den Prozess Control-C stoppen

2016-10-13T18:18:44.787+0200 I CONTROL  [thread1] Ctrl-C signal
2016-10-13T18:18:44.788+0200 I CONTROL  [consoleTerminate] got CTRL_C_EVENT, will terminate after current cmd ends
2016-10-13T18:18:44.789+0200 I FTDC     [consoleTerminate] Shutting down full-time diagnostic data capture
2016-10-13T18:18:44.792+0200 I CONTROL  [consoleTerminate] now exiting
2016-10-13T18:18:44.792+0200 I NETWORK  [consoleTerminate] shutdown: going to close listening sockets...
2016-10-13T18:18:44.793+0200 I NETWORK  [consoleTerminate] closing listening socket: 380
2016-10-13T18:18:44.793+0200 I NETWORK  [consoleTerminate] shutdown: going to flush diaglog...
2016-10-13T18:18:44.793+0200 I NETWORK  [consoleTerminate] shutdown: going to close sockets...
2016-10-13T18:18:44.795+0200 I STORAGE  [consoleTerminate] WiredTigerKVEngine shutting down
2016-10-13T18:18:45.116+0200 I STORAGE  [consoleTerminate] shutdown: removing fs lock...
2016-10-13T18:18:45.117+0200 I CONTROL  [consoleTerminate] dbexit:  rc: 12

Nun ist Ihre Datenbank vorbereitet und Sie können den Dienst mit starten

C:\>net start MongoDB
The MongoDB service is starting.
The MongoDB service was started successfully.
0
Marco Montel

Ich hatte das gleiche Problem unter Windows 8.1

Die Lösung, die für mich funktioniert hat, ist, den Pfad der Konfigurationsdatei korrekt anzugeben

Zu HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > services > MongoDB > imagePath ging der Wert wie folgt:

"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe" --config mongod.cfg --service

Dann habe ich nur den Pfad der Konfigurationsdatei so korrigiert, dass er meinem tatsächlichen Pfad entspricht:

"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe" --config "d:\mongodb\mongod.cfg" --service
0
Walid Ammar

Für mich war das Problem das falsche Verzeichnis. Stellen Sie sicher, dass Sie das Verzeichnis aus dem Datei-Explorer kopieren und nicht das auf der Dokumentseite angegebene Verzeichnis als korrekt angeben.

0
yugaanks

Wenn Sie den Fehler erhalten: 

der Dienstname ist ungültig

wenn Sie net start mongodb ausführen, müssen Sie den folgenden Befehl in Schritt 4 von Manuelles Erstellen eines Windows-Dienstes für MongoDB Community Editition ausführen:

sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
0

Ich hatte einige Änderungen in der Config-Startdatei vorgenommen, die dieses Problem verursachten. Als ich in der Datei " mongo.log " nachgesehen habe, hieß es

"Server kann nicht gestartet werden. Gefundene Datendateien in E:\Mongo\data\db, erstellt von der Speicherengine 'wiredTiger'. Die konfigurierte Speicherengine ist 'mmapv1'. Wird beendet."

Durch das Zurücksetzen der Speicher-Engine auf "wiredTiger" wurde das Problem für mich behoben. Hoffe das hilft anderen.

0
Eddie Kumar

Prüfen Sie, ob bereits eine Prozessinstanz von mongod ausgeführt wird. Wenn ja, wird dieser Dienst nicht gestartet, da C:\data\db\mongod.lock von ihm verwendet wird.

Und um MongoDB als Dienst zu starten, darf diese Datei von keinem Prozess verwendet werden.

0
student

Versuchen Sie einfach, mongod.exe lokal in der Befehlszeile auszuführen. Sie können hier eine Ausnahme erhalten, die von mongod aufgerufen wird, und versuchen, es zu lösen. In meinem Fall war es nur ein wenig freier Speicherplatz auf der lokalen Festplatte, daher ändere ich einfach den Speicherort der Verzeichnisse und die Mongocofig-Datei, und jetzt läuft es ok.

0
Gothmog