MongoDB 我们如何获取所有当前打开的游标和它们正在运行的查询?

标签 mongodb

一些用户在设置了 noTimeout 的情况下打开游标到 mongo。我想列出所有打开的游标、它们的 ID、它们的选项、它们正在运行的查询、该游标的开始时间、上次使用它的时间(获取更多)。有什么命令可以做到这一点吗?有人可以指出任何提示,以便我可以在需要时编写一个小应用程序。

最佳答案

MongoDB 有一个命令“currentOp”,其中包含当前操作(通常,不仅是打开的游标)。结果是“inprog”值的数组。您有操作的线程 id,而不是游标 id,但它对于调查繁重的操作或那些已经运行了很长时间的操作非常有用。 这不是您想要的,但我认为您可以编写一个小程序来解析操作的运行时间,以确定哪些操作已经运行了一段时间。

看看我的一个聚合数据库示例,我只是为了测试目的而运行的,我将隐藏一些数据,因为它在我们的案例中非常敏感:)

"inprog" : [
    {
        "opid" : 74074645,
        "active" : true,
        "secs_running" : 2,
        "op" : "query",
        "ns" : "mydb.Terms.ByHour",
        "query" : {
            "aggregate" : "Terms.ByHour",
            "pipeline" : [
                {
                    "$match" : {
                        "cluster" : "my_key",
                        "start" : {
                            "$gte" : ISODate("2013-11-10T00:00:00Z"),
                            "$lte" : ISODate("2013-11-11T00:00:00Z")
                        }
                    }
                },
                {
                    "$group" : {
                        "_id" : "$start",
                        "count" : {
                            "$sum" : "$count"
                        }
                    }
                },
                {
                    "$sort" : {
                        "_id" : 1
                    }
                }
            ]

只需将结果放入变量中:

currentOps = db.currentOp()

并将其用作常规 json,或者编写一个小程序来迭代 currentOps.inprog 数组并检查 secs_running > 一些东西

希望对你有帮助。

关于MongoDB 我们如何获取所有当前打开的游标和它们正在运行的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21003571/

相关文章:

javascript - 在 pug 中编辑表格的单元格并将编辑的数据保存到数据库中

reactjs - 从 MongoDB 填充 Material-UI DataGrid 失败,找不到唯一 ID

node.js - 在 Ubuntu 上简单安装当前版本的 Wekan?

javascript - 用 upsert : true is not updating in express, mongoose 更新?

mongodb - NoSQL数据库引擎如何选择?

mongodb - NoSQL(MongoDB) 中的提交和磁盘持久化

node.js - Mongodb Nodejs 中的分页

mongodb - 使用 MongoDB 聚合框架获取数组大小直方图的最快方法

java - 使用 Java 在 MongoDB 中创建数据库用户

javascript - 在 MongoDB 查找函数中,我回调并使用 res.redirect,我收到无法设置 header 错误?