performance - 如何使用 mongostats 诊断 mongodb 内部的性能问题

标签 performance mongodb

我一直在使用 mongostats 来诊断我的 mongodb 实例中的整体事件。我如何使用它来诊断性能问题/降级?

我真正有兴趣深入了解的一个字段是锁定百分比和基于所有其他字段结果的预期行为。

我觉得这个功能有点含糊,需要进一步完善。

最佳答案

锁定的 % 是全局写锁(记住,mongo 有一个进程范围的写锁)在每个样本中被占用的时间百分比。当您增加写入次数(插入、更新、删除、db.eval() 等)时,该百分比会增加。高值意味着数据库花费大量时间被锁定以等待写入完成,结果是在释放锁之前无法完成任何查询。因此,整体查询吞吐量将减少(有时会显着减少)。

“faults”意味着mongo试图命中映射到虚拟内存空间但不在物理内存中的数据。基本上这意味着它正在访问磁盘而不是内存,并且表明您没有足够的 RAM(或者,例如,您的索引不正确平衡)。如果没记错的话,这仅在 Linux 上可用。这应该尽可能接近 0。

“qr:qw”是读取和写入查询队列,如果它们不为零,则意味着服务器接收的查询多于它能够处理的数量。这不一定是个问题,除非这个数字一直很高或还在增长。表示整体系统性能不足以支持您的查询吞吐量。

大多数其他字段都非常不言自明或没有那么有用。如果您希望受 io 限制,netIn/Out 很有用。如果这些值接近您的最大网络带宽,就会发生这种情况。

关于performance - 如何使用 mongostats 诊断 mongodb 内部的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4761291/

相关文章:

android - 我应该在添加到 ImageView 之前调整位图的大小还是让 ImageView 调整位图的大小?

javascript - 我可以像单元测试一样在 Node.js 中进行性能测试吗

c++ - 模拟加速大于最佳

mongodb - bson.errors.InvalidId : '_id' is not a valid ObjectId, 它必须是 12 字节输入或 24 字符十六进制字符串

performance - 非常奇怪-添加复合索引会使查询变慢(MongoDB)

linux - 编辑 .conf 文件以将新 Ip 添加到 bindIp 后无法启动 mongodb

android - 缓慢上传到正在运行的 Android 模拟器

python - 何时迭代集合,或何时使用数据库

node.js - Express session 存储:MongoError:_id上的E11000重复键错误收集

arrays - 带有嵌套文档的 $lookup