【问题标题】:mongoDB find a query that throws alertmongoDB 找到一个引发警报的查询
【发布时间】:2019-07-27 05:09:38
【问题描述】:

所以我收到了来自 Mongo 的警报 - 偶尔...

查询目标:扫描对象/返回已超过 1000

有没有办法专门查看有问题的查询?我在仪表板中看到随时间变化的趋势图 - 我的“性能顾问”没有显示“慢速”查询……而且我收到的电子邮件提醒特别指出要检查“性能顾问”。

任何帮助

【问题讨论】:

    标签: mongodb mongodb-atlas


    【解决方案1】:

    就在最近,我们在 mongo 集群的警报中看到了同样的错误

    Query Targeting: Scanned Objects / Returned has gone above 1000
    

    我在代码\日志中找不到任何返回这种大块的东西。

    它原来与我们的Charts 页面有关,即当我们打开图表时它正在触发。
    我想是因为它有很多聚合,我不确定如何优化那些,因为它主要是 UI 设置

    因此,如果您在 mongodb 上有任何图表,则值得检查打开这些图表是否会触发警报。

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案2】:

    通常,当 Scanned Object / Returned 比率很大时,这意味着这些查询会很慢并且会显示在 slow_query 日志中。如果那里没有显示任何内容,您可以减少slowms setting,该slowms setting 确定哪些查询将写入慢查询日志。

    $explain$collStats aggregation operator 是另外两个值得关注的工具,但对于这种情况,我建议更新您的 profiling level (db.setProfilingLevel),然后查看您的位置!

    如果您使用的是 Atlas,“Profiler”选项卡会以可探索的方式显示慢查询日志中的查询。如果你不在 atlas 上,mtools 有一些很好的 mongo 日志解析工具。

    【讨论】:

    • atlas 仪表板中是否有地方可以调整该设置?还是我需要运行那个 cmd
    • 我不确定;我不使用地图集。
    • 您可以使用db.getProfilingLevel() 来检查您的分析级别。 db.setProfilingLevel() 可用于更新值。但不建议更改时间而不是修复慢查询。 docs.mongodb.com/manual/tutorial/manage-the-database-profiler
    • 主要,这里的建议是减少慢查询日志上的时间,以便这些慢查询真正显示出来。绝对不想在那里增加时间! :)
    猜你喜欢
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 2018-06-07
    相关资源
    最近更新 更多