脚本抓取mongoDB慢查询进程,生成kill语句,快速恢复mongodb CPU打满情况
场景 :线上mongodb实例偶尔会被慢查询打满cpu的情况,影响应用正常连接mongoDB. |
临时解决方法 : 通过脚本抓取指定条件的查询进程opid,并生成kill语句。方便维护人员快速去杀掉慢查询进程,从而快速恢复mongoDB CPU飙高问题。 |
脚本及使用方法如下(脚本分副本集和分片集群):
一 副本集:
#!/bin/bash
user='xxxx' passw='xxxxx' port=3717 host='dds-xxx.mongodb.rds.aliyuncs.com'
/usr/local/mongodb/bin/mongo --port "$port" --host "$host" -u"$user" -p"$passw" << EOF |grep $1 |grep 'query|true'|cut -d'|' -f4 var ops = db.currentOp().inprog;
for(i = 0; i < ops.length; i++){ var opid = ops[i].opid; var nsname = ops[i].ns; var opname = ops[i].op; var active_name = ops[i].active; // print(nsname+"|Stopping op #"+opid) print(nsname+"|"+opname+"|"+active_name+"|db.killOp("+opid+");") }; EOF
|
把库名为yl_jms_css,状态"active" 为 true, 查询类型"op" 为"query"的进程抓出来。
sh mongo_replica_kill.sh yl_jms_css
db.killOp(459688754); db.killOp(459688751); db.killOp(455289236);
|
把库名为yl_jms_css,集合为customerservicestaff,状态"active" 为 true, 查询类型"op" 为"query"的进程抓出来。
sh mongo_replica_kill.sh yl_jms_css.customerservicestaff
db.killOp(432739282); db.killOp(464015186);
|
二 分片集群:
#!/bin/bash
user='xxxx' passw='xxxx' port=3717 host='s-xxxxx.mongodb.rds.aliyuncs.com'
/usr/local/mongodb/bin/mongo --port "$port" --host "$host" -u"$user" -p"$passw" << EOF |grep $1|grep 'query|true'|cut -d'|' -f4|sed -r 's@(.*:@(@g' var ops = db.currentOp().inprog;
for(i = 0; i < ops.length; i++){ var opid = ops[i].opid; var nsname = ops[i].ns; var opname = ops[i].op; var active_name = ops[i].active; // print(nsname+"|Stopping op #"+opid) print(nsname+"|"+opname+"|"+active_name+"|db.killOp("+opid+");") }; EOF
|
把库名为yl_jms_ops,状态"active" 为 true, 查询类型"op" 为"query"的进程抓出来。
sh mongo_sharding_kill.sh yl_jms_ops db.killOp(460475151); db.killOp(456069450); db.killOp(433487617); db.killOp(464813703); db.killOp(477121491);
|
把库名为yl_jms_ops,集合为arrivalscanlist,状态"active" 为 true, 查询类型"op" 为"query"的进程抓出来。
sh mongo_sharding_kill.sh yl_jms_ops.arrivalscanlist
db.killOp(460474112); db.killOp(456068416); db.killOp(433486601); db.killOp(464812643);
|
原文地址:https://www.cnblogs.com/hmysql/p/13158561.html