【发布时间】:2019-07-27 05:09:38
【问题描述】:
所以我收到了来自 Mongo 的警报 - 偶尔...
查询目标:扫描对象/返回已超过 1000
有没有办法专门查看有问题的查询?我在仪表板中看到随时间变化的趋势图 - 我的“性能顾问”没有显示“慢速”查询……而且我收到的电子邮件提醒特别指出要检查“性能顾问”。
任何帮助
【问题讨论】:
标签: mongodb mongodb-atlas
所以我收到了来自 Mongo 的警报 - 偶尔...
查询目标:扫描对象/返回已超过 1000
有没有办法专门查看有问题的查询?我在仪表板中看到随时间变化的趋势图 - 我的“性能顾问”没有显示“慢速”查询……而且我收到的电子邮件提醒特别指出要检查“性能顾问”。
任何帮助
【问题讨论】:
标签: mongodb mongodb-atlas
就在最近,我们在 mongo 集群的警报中看到了同样的错误
Query Targeting: Scanned Objects / Returned has gone above 1000
我在代码\日志中找不到任何返回这种大块的东西。
它原来与我们的Charts 页面有关,即当我们打开图表时它正在触发。
我想是因为它有很多聚合,我不确定如何优化那些,因为它主要是 UI 设置
因此,如果您在 mongodb 上有任何图表,则值得检查打开这些图表是否会触发警报。
【讨论】:
通常,当 Scanned Object / Returned 比率很大时,这意味着这些查询会很慢并且会显示在 slow_query 日志中。如果那里没有显示任何内容,您可以减少slowms setting,该slowms setting 确定哪些查询将写入慢查询日志。
$explain 和 $collStats aggregation operator 是另外两个值得关注的工具,但对于这种情况,我建议更新您的 profiling level (db.setProfilingLevel),然后查看您的位置!
如果您使用的是 Atlas,“Profiler”选项卡会以可探索的方式显示慢查询日志中的查询。如果你不在 atlas 上,mtools 有一些很好的 mongo 日志解析工具。
【讨论】:
db.getProfilingLevel() 来检查您的分析级别。 db.setProfilingLevel() 可用于更新值。但不建议更改时间而不是修复慢查询。 docs.mongodb.com/manual/tutorial/manage-the-database-profiler