用于限制写入的mongo统计信息

时间:2012-06-22 15:06:25

标签: mongodb

我正在异步地将记录信息写入mongodb。由于这是一个非必要的功能,我正在寻找一种方法来限制这些写入,因此它不会影响应用程序其他部分的读/写。基本上,只有当某个统计数据低于可接受的水平时才会写入。

我想使用的一个统计数据来自serverStatus的“globalLock.ratio”。但是,这似乎不是移动平均线,也不是衡量数据库当前使用情况的好方法。

对于我想要做的事情,有什么好的统计数据?写锁定%将是理想的,但我如何从serverStatus获得移动平均值?

1 个答案:

答案 0 :(得分:0)

您的问题有很多值得注意的事项:

1)如果你想要移动平均线,那么你需要在你的客户端程序中自己跟踪它们。如果你正在运行一个多线程程序,你可以专门用一个线程定期(1秒~5秒?)间隔轮询MongoDB,并自己计算移动平均值。这就是MMS的方式。

2)当你计算这个平均值时,你需要弄清楚“加载的数据库”对你意味着什么。可能有很多事情需要检查:你是否关心写锁百分比?读百分比? I / O使用情况?复制延迟?遗憾的是,没有任何一个指标可以随时适用于所有用例:您必须弄清楚您关心的内容并对其进行衡量。

3)为实现这一目标,您可以采取的另一个策略是使用写入关注点对日志记录集合进行写入,使用“多数”值的“w”值和合理的超时(例如10秒)。使用此方法,您将无法以比复制更快的速度写入数据库。如果你开始超时,你知道你需要缩减。如果你写得不够快,不能排空队列,那么你就开始删除日志条目了。