본문으로 바로가기

운영업무중에 일어나면 안되는 일이지만...

휴먼에러를 종종 범할 수 있다.

항상 긴장하면서 하는데 나도 모르게 find한다는 것을 remove로 날렸다...

 

빨리 쿼리를 중지 시키기 위해 

쿼리 프로세스를 찾아보았다.

 

> db.currentOp()
{
        "inprog" : [
                {
                        "opid" : 807992146,
                        "active" : true,
                        "secs_running" : 607,
                        "microsecs_running" : NumberLong(607478604),
                        "op" : "remove", //remove....
                        "ns" : "dsp.log",
                        "query" : {
                                "ymd" : {
                                        "$gt" : "20180101" //이상값 다 날라가겟네...
                                }
                        },
                        "client" : ip,
                        "desc" : "conn2707446",
                        "threadId" : "0x7e947c074700",
                        "connectionId" : 2707446,
                        "locks" : {
                                "^dsp" : "W"
                        },
                        "waitingForLock" : true,
                        "numYields" : 38816,
                        "lockStats" : {
                                "timeLockedMicros" : {
                                        "r" : NumberLong(0),
                                        "w" : NumberLong(887732677)
                                },
                                "timeAcquiringMicros" : {
                                        "r" : NumberLong(0),
                                        "w" : NumberLong(104174803)
                                }
                        }
                },
                {
                        /* 다른 쓰레드*/
                }
        ]
}

위의 명령어를 통해서 프로세스를 찾은 후

opid값을 가져 온 후

 

> db.killOp(807992146)
{ "info" : "attempting to kill op" }

 

위처럼 프로세스를 kill 하니 다행이 쿼리가 중지하였다.

이제는 복구할 일만...