mongodb服务在进行定时任务操作时崩溃,查询日志发现崩溃时固定出现以下两条格式的记录:
command admin.$cmd command: isMaster { ismaster: 1 } numYields:0 reslen:189 locks:{} protocol:op_query 1600ms
serverStatus was very slow: { after basic: 600, after asserts: 1001, after backgroundFlushing:
1302, after connections: 1701, after dur: 2194, after extra_info: 3300, after globalLock: 3995,
after locks: 5002, after network: 5304, after opLatencies: 5600, after opcounters: 5799,
after opcountersRepl: 6104, after repl: 6500, after security: 6802, after storageEngine: 7500,
after tcmalloc: 8601, after wiredTiger: 32799, at end: 37100 }
从服务器的log来看,mongodb崩溃时进行了大量的读操作。
想请教各位大佬如何从这两条分析mongodb服务崩溃的原因?
另外前一条让我很困惑。我们并没有为mongodb设置副本集,为什么还会有isMaster的命令呢?
这两条日志跟你崩溃的原因无关。通常这两条指令来自你们的监控系统的定时采样,正常情况下应该是很快完成的。如果这两条指令都慢,就代表数据库处于很大的压力下。你要找的是什么原因导致的压力,以及崩溃前的最后时刻发生了什么问题。