啥话不说,先来个图
出现上面情况,首先要查一下mongo是否出现锁,我的情况是因为mongo集群其中一个shard出现了锁,导致程序连接查询失败,然后程序一直重试进行查询,连接数瞬间翻了一倍,系统负载也跟着上升。
此服务器的配置
CPU:Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz 2颗
内存:16G*12
硬盘:15k 600G*8
出现上面的情况时,首先要查一下正在执行的操作
通过运行以下命令:
shard1:PRIMARY> db.currentOp()
主要有以下信息:
client:请求是由哪个客户端发起的
opid:操作的opid,有需要的话,可以通过 db.killOp(opid) 杀死操作
secs_running/microsecs_running:请求运行的时间,如果这个值特别大就非常值得注意
query/ns: 对集合进行的具体操作
lock*:锁相关参数
如果出现锁的情况下,此操作会显示很多,可能终端根本显示不下,不妨试试下面这种方式:
[root@DB ~]39;db.currentOp()&34;root&34;passwod&34;admin&34;\&34;&39;{print $3}&39;,&39;{print $1}' db.killOp(opid)
db.killOp(opid) shard1:PRIMARY>
集群模式的话,kill要在对应shard锁的PRIMARY上操作。