1.查看服务器线程运行状态
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.currentOp());"
当发现secs_running这个字段的值较大并且严重阻塞了系统其它线程运行的时候可以先把使用db.killOp(opid)将其kill掉,然后针对这个链接执行的query进行优化。
在一个正在运行的mongodb服务器内部是有很多链接,直接执行db.currentOp()会将所有链接的信息都打印出来,这不便于找出有问题的链接,所以必须都db.currentOp()输出的信息做处理.
以下是一些信息处理脚本
找出运行时间超过200ms的链接信息
mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp(true).inprog.forEach(function(doc){if(doc.active==true&& doc.secs_running>200){printjson(doc)}});"
如果只需要打出这些链接的某个字段可以直接用print
mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp(true).inprog.forEach(function(doc){if(doc.active==true&& doc.secs_running>200){printjson(doc.opid)}});"
打印客户端信息
mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp(true).inprog.forEach(
function(opDoc){
if(opDoc.client)
printjson(opDoc.client)
}
);"
还可以获取当前操作中,已停止活动并且操作行为为query的信息
mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp(true).inprog.forEach(
function(opDoc){//opDoc其实是返回的每个op操作对象
if(!opDoc.active&&opDoc.op=='query')
printjson(opDoc)
}
);"
还可以获取当前操作中,正在进行中并且操作行为为query的信息
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp(true).inprog.forEach(
function(opDoc){//opDoc其实是返回的每个op操作对象
if(opDoc.active&&opDoc.op=='query')
printjson(opDoc)
}
);"
查看数据库payDB的信息:
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.currentOp());"
查看连接数
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().connections);"
把所有在等待锁的操作显示出来:
mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();db.currentOp().inprog.forEach(function(item){if(item.waitingForLock)print(JSON.stringify(item))});"
锁信息
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().locks);"
全局锁信息
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().globalLock
);"
内存信息
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().mem
);"
索引统计
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().indexCounters);"
网络
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().network);"
复制集
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().repl
);"
复制集判断哪个IP是primary
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().repl
);" | grep primary
操作计数器
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().opcounters
);"
Journal(dur)持久性
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin payDB -eval"rs.slaveOk();printjson(db.serverStatus().dur
);"
查看oplog信息:
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin local -eval "rs.slaveOk();printjson(db.oplog.rs.stats()
);"
这个IP不用修改这是primary
查看master 的oplog元数据信息:
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin admin -eval"rs.slaveOk();printjson(db.printReplicationInfo()
);"
修改成任意IP
查看slave的同步状态-延迟:
$ mongo --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin local -eval"rs.slaveOk();printjson( db.printSlaveReplicationInfo()
);"
命令用于追踪数据库实例的实时运行状况
mongostat --host=<IP Addr> --port=<PORT> -u mongo_monitor -p"<PASSWORD>" --authenticationDatabase admin
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。