Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 연결된 클라이언트를 확인하는 방법

MongoDB에서 현재 데이터베이스 서버에 연결된 클라이언트 목록을 확인하려면 currentOp() 메서드를 활용할 수 있습니다. 이 메서드에 true 값을 전달하면 유휴 상태의 연결까지 포함한 모든 작업 정보가 반환되며, 결과 배열에서 client 필드를 반복(iterate)하여 각 클라이언트의 정보를 추출할 수 있습니다.

currentOp() 명령어 실행하기

먼저 MongoDB 셸에서 다음과 같이 currentOp()를 실행해 보겠습니다.

> db.currentOp(true)

출력 결과 분석

위 명령을 실행하면 아래와 같은 출력 결과를 확인할 수 있습니다. 여기서 클라이언트 주소가 127.0.0.1로 표시되는 것은 로컬호스트(localhost) 환경에서 접속했기 때문입니다. 출력에는 현재 서버에 연결된 모든 클라이언트와 내부 스레드 정보가 함께 표시됩니다.

{
    "inprog" : [
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "conn1",
            "connectionId" : 1,
            "client" : "127.0.0.1:61787",
            "appName" : "MongoDB Shell",
            "clientMetadata" : {
                "application" : {
                    "name" : "MongoDB Shell"
                },
                "driver" : {
                    "name" : "MongoDB Internal Client",
                    "version" : "4.0.5"
                },
                "os" : {
                    "type" : "Windows",
                    "name" : "Microsoft Windows 10",
                    "architecture" : "x86_64",
                    "version" : "10.0 (build 17134)"
                }
            },
            "active" : true,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530",
            "opid" : 12538,
            "lsid" : {
                "id" : UUID("da370b0f-093a-45f3-b1fe-697daca8ccd2"),
                "uid" : BinData(0,"47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=")
            },
            "secs_running" : NumberLong(0),
            "microsecs_running" : NumberLong(160815),
            "op" : "command",
            "ns" : "admin.$cmd.aggregate",
            "command" : {
                "currentOp" : 1,
                "$all" : true,
                "lsid" : {
                    "id" : UUID("da370b0f-093a-45f3-b1fe-697daca8ccd2")
                },
                "$db" : "admin"
            },
            "numYields" : 0,
            "locks" : {},
            "waitingForLock" : false,
            "lockStats" : {}
        },
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "LogicalSessionCacheRefresh",
            "active" : false,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530"
        },
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "SessionKiller",
            "active" : false,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530"
        },
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "TTLMonitor",
            "active" : false,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530"
        },
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "free_mon",
            "active" : false,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530"
        },
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "freemon-0",
            "active" : false,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530"
        },
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "startPeriodicThreadToAbortExpiredTransactions",
            "active" : false,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530"
        },
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "WTCheckpointThread",
            "active" : false,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530"
        },
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "ftdc",
            "active" : false,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530"
        },
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "WTJournalFlusher",
            "active" : false,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530"
        },
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "clientcursormon",
            "active" : false,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530"
        },
        {
            "host" : "DESKTOP-QN2RB3H:27017",
            "desc" : "initandlisten",
            "active" : false,
            "currentOpTime" : "2019-03-30T05:13:34.296+0530"
        }
    ],
    "ok" : 1
}

주요 필드 살펴보기

반환된 결과에서 자주 확인하게 되는 핵심 필드는 다음과 같습니다.

  • client: 클라이언트의 IP 주소와 포트 번호를 나타냅니다. 예제에서는 127.0.0.1:61787로 표시되어 있습니다.
  • connectionId: 해당 연결에 부여된 고유 식별자입니다.
  • appName: 클라이언트 애플리케이션의 이름으로, 예제에서는 MongoDB 셸이 사용되었습니다.
  • active: 해당 연결이 현재 활성 상태인지 여부를 나타냅니다.
  • opid: 진행 중인 작업(operation)의 고유 ID로, 필요 시 작업을 종료(kill)할 때 사용됩니다.

참고 사항

출력 결과에는 실제 클라이언트 연결(conn1) 외에도 TTLMonitor, ftdc, initandlisten 등 MongoDB가 내부적으로 운영하는 백그라운드 스레드들이 함께 표시됩니다. 이들은 실제 클라이언트가 아니므로, 순수한 클라이언트 연결만 확인하고 싶다면 client 필드가 존재하는 항목을 기준으로 필터링하는 것이 좋습니다.