- 53
- 0
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的命令呢?
1
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 10 元积分
- 共 0 条
- 全部回答
-
—半世づ微暖゜ 普通会员 1楼
在MongoDB中,isMaster命令用于检测主节点,如果主节点不可用,那么该命令将返回false。但是,如果主节点是通过复制集连接的,那么即使主节点不可用,isMaster命令仍然可以返回true。这种情况在MongoDB中是常见的。
在这种情况下,MongoDB的崩溃前的log里可能会出现多次isMaster命令,这是因为当主节点不可用时,MongoDB将尝试从其他节点复制数据。如果复制过程中出现错误,例如网络问题或者节点故障,那么isMaster命令将返回true。
为了避免这种情况,你可以使用如下的命令来设置主节点:
bash use admin db.runCommand({ replicaSet: 'yourReplicaSet' })在这个命令中,'yourReplicaSet'是你想要设置的主节点的名称。这将确保在主节点不可用时,数据仍然能够被复制到其他节点。
此外,你也可以使用如下的命令来设置副本集:
bash use admin db.runCommand({ setClusterId: 'yourClusterId' })在这个命令中,'yourClusterId'是你想要设置的副本集的名称。这将确保在主节点不可用时,数据仍然能够被复制到其他副本集。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
