programing

MongoDB를 서비스로 시작할 수 없습니다.

css3 2023. 3. 6. 21:23

MongoDB를 서비스로 시작할 수 없습니다.

MongoDB를 개발한지 몇 개월이 지났습니다만, Windows 7 Enterprise 머신에 서비스로 인스톨 하고 싶다고 생각하고 있습니다.다음은 서비스를 작성하기 위해 실행한 명령어입니다.

"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

그러나 net start "MongoDB" 또는 서비스 제어판을 사용할 때마다 다음 오류가 나타납니다.

오류 1053:서비스가 시작 또는 제어 요청에 시기적절하게 응답하지 않았습니다.

환경: Windows 7 Enterprise 64비트 MongoDB: 1.6.3 pdfile 버전 4.5

진짜 문제를 확인하기 위해 로그를 확인했습니까?

설치물을 Mongo에 합니다.c:\mongodb

c:\mongodb\logsc:\mongodb\data\db디렉토리로 이동합니다.

다음 ''를 살펴보세요.c:\mongodb\bin다음 명령을 실행하여 서비스를 제거합니다(설치된 경우).

mongod --remove

그런 다음 로그 및 데이터 디렉토리를 지정하여 서비스를 설치합니다.

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

서비스를 시작하는 데 문제가 있는 경우 지정된 로그 파일에 이유가 표시됩니다.

자세한 것은 이쪽.

데이터 디렉토리 또는 로그 디렉토리에 절대 파일 경로를 지정하지 않은 경우 동일한 Windows 오류가 발생하지만 로그 파일은 표시되지 않습니다.

Webiyo에서 "Windows 7에 MongoDB 서비스 설치" 정보를 사용하여 등록된 서비스 인수를 수정했습니다.

  1. MongoDB를 다운로드하여 C:\ 드라이브에 압축을 풉니다.
  2. "C:\mongodb165" 디렉토리 아래에 "data" 및 "logs" 서브 디렉토리를 추가합니다.
  3. "C:\mongodb165\logs\mongolog.txt"에 로그 파일 이름 "mongolog.txt"를 추가합니다.
  4. 디렉토리를 "C:\mongodb165\bin"으로 변경합니다.
  5. 다음 명령을 실행합니다.

    mongod --install --rest –master –logpath=C:\mongodb165\logs\mongolog.txt
    
  6. 레지스트리 편집기(regedit.exe)를 열고 HKEY_LOCAL_MACHINE → SYSTEM → CurrentControlSet → Services로 이동합니다.

  7. MongoDB 키를 찾아 "ImagePath" 값을 다음과 같이 설정합니다.

    C:\mongodb165\bin\mongod --service  --rest  --master  --logpath=C:\mongodb165\logs\mongolog.txt  --dbpath=C:\mongodb165\data
    
  8. 레지스트리에 변경 내용을 저장하고 레지스트리 에디터를 종료합니다.

  9. Component Services(컴포넌트 서비스)를 열고 "Services(로컬)"을 클릭한 후 MongoDB 서비스를 찾습니다.시작하세요.
  10. URL http://localhost:28017/에서 MongoDB가 통계를 반환하는지 확인합니다.

Windows 7 머신에서도 같은 문제가 발생했습니다.MongoDBs Docs의 지시에 따라 설치했는데, C:\가 아니면 net start MongoDB를 실행할 수 없습니다.위의 Webiyo 링크에 기재되어 있는 지시에 따라 MongoDB를 재설치하고 싶지는 않습니다.문서에 따라 이미 MongoDB를 설치하고 프로젝트 디렉토리가 어디에 있든 "net start MongoDB"를 실행할 수 있도록 하려면 다음과 같이 하십시오.

> services > CurrentControlSet > services > 으로 이동합니다.

[] 컬럼의 [ImagePath] [ImagePath는 [ImagePath]의 [ImagePath]를합니다.

).

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

" mongodb ".cfg"에 "ImagePath" "data" "C:\" "mongodb" 라는 행을 추가합니다.dbpath=C:\mongodb\data\db

이 작업을 수행한 후 "net stop MongoDB"를 실행하면 "System error 109 has occurred.파이프가 끝났습니다.너도 볼 수 있을 거야.이 메시지는 jira.mongodb.org에서 자세히 설명되어 있습니다.

을 절약하기 Tad 는 이하고 있습니다.

"... 2.1.0에서는 정상적으로 동작하고 있었습니다.나중에 변경으로 인해 또 고장났습니다.그러나 현재 코드에서 이 오류 메시지가 나타납니다.

그 몽고드라는 설명입니다.exe는 Windows Service Control Manager가 작성한 콜백스레드를 종료하고 있을 때 "net stop mongodb"로 인해 콜백스레드 작성에 사용한RPC 파이프가 파손됩니다.우리는 이것을 피하기 위해 출구 논리를 재정비할 필요가 있다.

오류 메시지는 이 문제의 유일한 실제 영향입니다.명령어를 종료하고 정상적으로 종료하여 Windows Service Control Manager에 정지되었음을 알립니다.그러나 "net" 명령어는 RPC 호출에서 예상대로 돌아가지 않았기 때문에 오류 메시지를 표시합니다.

mongod.cfg 파일의 마지막 두 줄은 다음과 같습니다.

#snmp:
mp:

왜 거기에 MP가 있는지 모르겠어.하지만 이미지 경로를 수동으로 실행했을 때

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

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MongoDB

받았습니다

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

그래서 댓글을 달았더니 아무 문제 없이 서비스가 시작되었습니다.

다음은 Windows 7에 mongoDB를 설치하기 위해 수행한 단계입니다.

  1. mongodb 사이트에서 .download 파일을 다운로드하여 실행합니다.https://www.mongodb.com/download-center?jmp=nav#community

  2. mondoDb가 다운로드되는 곳(일반적으로 c드라이브 Program Files 폴더)에서 해당 폴더로 이동하여 동일한 폴더 내의 bin 폴더가 있는 곳이면 데이터 폴더와 로그 폴더를 만듭니다.

3. 데이터 폴더 내부에 db 폴더를 만듭니다.

그 구조는 이렇게 생겼을 것이다.

  1. 이제 관리자 권한으로 명령 프롬프트를 엽니다.

  2. 파일 경로를 변경하여 bin 폴더를 입력합니다.(이 경우 c>프로그램 파일> MongoDB> bin> )

  3. 다음 명령을 입력합니다.mongod -- directoryperdb -- dbpath " C : / Program Files \ MongoDB \ data " -- logpath " C :\Program Files\MongoDB\log\mongo.log" --logappend --rest --install

  4. 그러면 로그 경로와 데이터베이스 경로가 설정됩니다.마지막으로 net start MongoDB를 실행합니다.이것이 도움이 되길 바랍니다.

다음 명령을 실행했습니다.

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

그리고 다음과 같은 메시지를 받았습니다.

서비스가 제어 기능에 응답하지 않습니다.NET HELPMSG 2186을 입력하면 더 많은 도움말을 볼 수 있습니다.

몇 가지 시행착오를 겪은 후 튜토리얼에 따라 mongod.conf 파일 이름을 지정하라는 메시지가 표시되었지만 명령어는 mongod.cfg를 참조하려고 했습니다.

그 이름을 수정하고 명령을 다시 실행하자마자

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.

서비스가 정상적으로 실행되기 시작했습니다.

Windows Server 2012에서 같은 문제가 발생할 수 있는 다른 사용자:

Windows Server 2012의 Mongo 3.0.3에서도 같은 문제가 발생했습니다.시스템 관리자가 아니기 때문에 sc.exe에 대해 변경된 내용은 알 수 없습니다.사용해야 합니다.

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

이것은 바이너리 파일 경로와 컨피규레이션파일 경로 모두에 대해 웹사이트 상의 경로와 비교하여 \"\"를 포함하지 않습니다.

mongoDB 3.0의 경우 설정 파일에서 다음을 설정해야 합니다.

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

로그 경로는 폴더가 아닌 파일로 끝나야 합니다.

mongod.cfg 파일에 탭이 있는지 확인합니다.탭을 제거하면 해결됩니다!

MongoDB 3.6.0에서 동작하는 것은 다음과 같습니다.

다음 폴더가 있는지 확인합니다.

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

필요한 명령어는 다음과 같습니다.

  • mongod --directoryperdb -dbpath C:\mongodb\data\db --logpath C:\mongodb\log\mongo.log --logappend --service --install
  • 넷 스타트 MongoDB
  • 몽고

다른 방법은 서비스를 실행하는 계정에 데이터 디렉토리에 대한 쓰기 권한이 없는 경우입니다.

이 경우 서비스는 잠금 파일을 생성할 수 없습니다.

이 경우 mongod 서비스는 정상적으로 동작하지 않고 프로세스를 시작하는 루프 상태가 됩니다.이러한 루프는 처리되지 않은 예외나 크래시 등을 즉시 발생시킵니다.프로세스가 기동할 때마다 로그 파일이 재생성되기 때문에 에러를 확인하려면 로그 파일을 빠르게 취득해야 합니다.

Windows 서비스의 기본 사용자는 localhost\system 입니다.따라서 이 사용자가 당신의 db 디렉토리에 쓸 수 있는지, 아니면 가능한 다른 사용자로 서비스를 시작할 수 있는지 확인하는 것이 수정입니다.

버전 2.6 이상의 경우 mongo.cfg가 가리키는 /data/db/ 및 /log/ 폴더를 생성해야 합니다.MongoDB는 그 자체로는 동작하지 않으며 서비스로 실행되면 이 에러가 발생합니다.

mongod 전체를 입력하기 전에 오른쪽 클릭으로 "관리자로서 실행" 권한이 있는 명령줄을 열어야 합니다.

그냥 몽고드를 실행해봐.mongod가 호출하여 해결하려고 하는 예외는 명령줄에서 로컬로 확인할 수 있습니다.제 경우 로컬 디스크의 빈 공간이 적기 때문에 디렉토리 위치 변경과 Mongocofig 파일 변경만으로 정상적으로 동작합니다.

디버깅에 30분을 소비한 후...드디어 "rest" 속성 앞에 대시가 하나 있다는 것을 알게 되었습니다.

mongodb as service.

서비스 상세 내용을 보면 서비스를 시작하는 명령어는 다음과 같습니다.

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

이 MongoDB 를 ."--config 레지스트리를 편집하여 수정하기만 하면 됩니다.

Windows 8.1에서도 같은 문제가 발생하였습니다.

나에게 효과가 있었던 솔루션은 config 파일 경로를 올바르게 지정하는 것입니다.

★★★★★★★★★★로 이동HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > services > MongoDB > imagePath을 사용하다

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

다음으로 실제 경로와 일치하도록 설정 파일 경로를 수정했습니다.

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

서비스를 시작하기 전에 데이터베이스를 생성해야 합니다.

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

그런 다음 Control-C 프로세스를 중지할 수 있습니다.

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

이것으로 데이터베이스가 준비되고 다음을 사용하여 서비스를 시작할 수 있습니다.

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

가 " " "인지 합니다.mongod가 이미 실행 중입니다.'인 경우 이는 시작되지 않습니다. 왜냐하면 '네'는 '네'를 나타내기 때문입니다.C:\data\db\mongod.lock용됩니니다다

또한 MongoDB를 서비스로 시작하기 위해서는 이 파일을 어떤 프로세스에서도 사용할 수 없습니다.

제게는 잘못된 전화번호부였습니다.파일 탐색기에서 디렉토리를 복사 붙여넣고 문서 페이지에 지정된 디렉토리가 올바르다고 가정하지 마십시오.

에러가 표시되는 경우:

서비스 이름이 잘못되었습니다.

net start mongodb를 실행하는 경우 MongoDB 커뮤니티 편집용 Windows 서비스 수동 작성 순서4에서 다음 명령을 실행해야 합니다.

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"

Config 스타트업 파일에서 변경을 거의 하지 않았기 때문에 이 문제가 발생하였습니다."mongo.log" 파일을 살펴보니

「서버를 기동할 수 없습니다.스토리지 엔진 'wiredTiger'에 의해 작성된E:\Mongo\data\db 내의 데이터 파일이 검출되었습니다.구성된 스토리지 엔진이 'mmapv1'입니다. 종료됩니다.

스토리지 엔진을 'wiredTiger'로 리셋하면 문제가 해결되었습니다.이것이 다른 사람들에게 도움이 되길 바랍니다.

mongodb를 3.4에서 3.6으로 업데이트 했을 때 문제가 발생하였고, 이전 버전에서 regedit 설정을 잔존으로 하여도 문제가 발생할 수 있음을 알게 되었습니다.

따라서 명령줄을 통해 regedit을 열고 아래 값을 확인합니다.ImagePath\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MongoDB절대 경로와 서피스가 모두 올바른지 확인합니다.

내 경우, 재설치해도 efficipes 설정이 업데이트되지 않아 efficipes는--httpinterface그리고.--restmongodb 3.6에서 삭제된 반면 regedit에는 남아 있습니다.

저는 MongoDB가 필요한 블로그 튜토리얼을 팔로우하기 시작했습니다.서비스 다운로드 및 설정에 대한 지침이 포함되어 있습니다.그러나 어떤 이유에서인지 해당 튜토리얼에서 Windows 서비스를 시작하는 명령이 작동하지 않았습니다.그래서 MongoDB docs에 접속하여 mongodb.org에 기재되어 있는 명령어를 실행해 보았습니다.

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

[SC] Create Service SUCCESS라는 메시지를 받았습니다.

그리고 이걸 실행했어: net start MongoDB

그리고 다음과 같은 메시지를 받았습니다.

The service is not responding to the control function.

More help is available by typing NET HELPMSG 2186.

C:에 'mongod.cfg'라는 이름의 파일을 만듭니다.\MongoDB\bin\mongodb\' 파일을 추가하고 'net start MongoDB' 명령을 다시 실행하자마자 서비스가 정상적으로 실행되기 시작했습니다.

이게 도움이 됐으면 좋겠다.

저 같은 경우에는 MongoDB 데이터 파일이 있는 드라이브의 디스크 공간이 부족했습니다.MongoDB 로그 파일을 확인해보니 다음과 같은 내용이 있습니다.

2015-11T21:53:54.717+0500 E JORNAL [initandlisten] 2015-11T21:53:54.717+0500 I JORNAL [initandlisten] C:\wamp\bin\mongb\db\db\small\db\journal 또는 small files에서 3379MB를 사용하세요.

내가 해야 할 일은 약간의 공간을 정리하고 서비스를 다시 시작하는 것이었다.나한테는 통했어따라서 로그 파일을 확인하고 그에 따라 문제를 해결하기만 하면 됩니다.

언급URL : https://stackoverflow.com/questions/4661670/cannot-start-mongodb-as-a-service