programing

Socket Exception:주소가 이미 MONGODB를 사용 중입니다.

closeapi 2023. 4. 1. 09:21
반응형

Socket Exception:주소가 이미 MONGODB를 사용 중입니다.

mongodb를 실행하려고 할 때 이 오류를 발견했습니다.홈브루를 통해 설치합니다.도와 주세요

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$

이전 mongod 인스턴스를 중지하고 새 인스턴스를 시작할 수 있습니다.

이전 mongod 인스턴스를 종료하려면 먼저 컴퓨터에서 실행 중인 태스크 목록을 검색하십시오.

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

mongod COMMAND와 해당 PID 및 유형을 검색합니다.

sudo kill <mongo_command_pid>

이제 mongod 인스턴스를 입력해서 시작합니다.

mongod

MongoDB가 정상적으로 실행되고 있는 것을 확인할 수 있습니다.

포트에서 프로세스가 이미 실행 중입니다.27017에 의해 사용됩니다.mongodb따라서 해당 포트에서 프로세스를 중지하거나 다른 포트 번호로 시도해야 합니다.

해라mongod --port 27018

선택한 포트 번호를 변경할 수 있습니다.

편집:

또한 mongo 서버의 실행 중인 모든 인스턴스를 정지할 수도 있습니다.sudo killall mongod@Dassi Orleando가 댓글로 언급했듯이그리고 달려라mongod

요약 기타(@Tony Roczz,@Balasubramani M)의 답변은 다음과 같습니다.

근본 원인

에러:Failed to set up listener: SocketException: Address already in use

다음을 의미합니다.

  • 이전에 mongodb를 실행한 적이 있다
    • 기본 포트 사용27017

솔루션

(대부분의 경우) 종료 후 재시작mongod

몽고드를 죽이다

두 가지 방법:

  • killall을 사용하다
    • killall mongod
  • PID로 죽이다
    • mongod PID 찾기
      • 방법 1:ps aux | grep mongod
      • 출력은 다음과 같습니다.limao 425 ... /usr/local/opt/mongodb-community/bin/mongod --config /usr/local/etc/mongod.conf
      • 방법 2:.lsof -iTCP -sTCP:LISTEN -n -P
      • 출력은 다음과 같습니다.mongod 425 limao .. TCP 127.0.0.1:27017 (LISTEN)
    • PID에 의한 정지:kill -9 425

몽고드를 재기동하다

  • 대부분의 경우:mongod
  • 어떤 특별한 경우
    • brew services start mongodb-community
      • 설치 커뮤니티 버전의 Mac:brew install mongodb-community

(몇몇사람에게) 다른 포트로 실행하다

  • 다른 포트로 실행:mongod --port 27018
    • 여러 mongod 서버를 동시에 실행하고 싶은 사용자만

기타 주의사항

실행 중인 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)

볼 수 있다27017는 현재 mongodb 포트를 실행하고 있습니다.

mongod가 실행 중인지 확인하는 방법

  • mongod 상태 확인:
    • ps aux | grep mongod
      • 출력으로 확인할 수 있습니다.mongod서비스
    • brew services list
      • 에 의해 설치된 경우brew로부터 시작하다brew

mongodb 버전 4.*를 사용하고 있는 경우

기본 설정에는 필요한 권한을 가진 "db" 폴더 "/data/db"가 있어야 합니다.

그것을 확인하기 위해 MongoDB 서비스가 시작되었습니다.

brew services list

그렇지 않으면 실행한다

brew services start mongodb

몽고 대신 몽고를 경영하다

mongo의 서버를 닫기 위해 아래 명령어를 명령줄에 붙여 해결했습니다.

sudo pkill -f mongod

"sudo"(슈퍼 사용자 실행)는 명령어 admin 권한을 실행하므로 사용자 암호를 묻습니다.

먼저 다음 명령을 사용하여 실행 중인 서버를 종료합니다.

mongod --shutdown

그런 다음 실행합니다.

sudo mongod

다음 명령어를 실행한 후:

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

mongod COMMAND와 해당 PID 및 유형을 검색합니다.

sudo kill <mongo_command_pid>

mongod를 재부팅해도 여전히 Socket Exception: 같은 오류와 함께 실패합니다.주소가 이미 사용 중입니다."

서버가 어제 다시 시작되었는데 이 일이 발생했습니다.

이 명령어 하나만으로

sudo pkill -f mongod

에러가 포토에 있는 것을 확인합니다.catalina 를 사용하고 있는 경우는, ~/data/db 에 관해서도 보고된 문제가 있습니다.

mongod 프로세스가 이미 다운된 경우 /tmp에서 .sock 파일을 삭제하기만 하면 됩니다.

mongod는 이미 다운되어 있기 때문에 다음 위치에 표시되지 않습니다.

lsof -iTCP -sTCP:LISTEN -n -P

오류:

[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.

로그 파일(/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

따라서 소켓 잠금에 대해 다음을 찾습니다.

ls -ltra /tmp|grep .sock

제거만 하면 됩니다(실가동 환경에서 주의해서 작업합니다).

rm -f mongodb-26002.sock

지-럭!

당연한 것처럼 들리겠지만 mongodb가 이미 실행 중인지 확인해야 합니다.따라서 먼저 다음을 실행하여 DB를 시작하는 대신 다음을 수행합니다.

sudo mongod

직접 실행:

mongo

언급URL : https://stackoverflow.com/questions/47975929/socketexception-address-already-in-use-mongodb

반응형