我们有一组日志数据,其中集合中的每个文档都由MAC地址和日历日标识.基本上:
{
_id: <generated>,
mac: <string>,
day: <date>,
data: [ "value1", "value2" ]
}
Run Code Online (Sandbox Code Playgroud)
每隔五分钟,我们会在当天的文档中向数据数组添加一个新的日志条目.当我们为每个MAC创建一个新文档时,该文档将在午夜UTC结束.
我们已经注意到,IO(按写入的字节数衡量)会整天增加,然后在UTC午夜降回.这不应该发生,因为日志消息的速率是不变的.我们认为意外行为是由于Mongo移动文档,而不是更新其日志数组.对于它的价值,stats()显示paddingFactor是1.0299999997858227.
几个问题:
db.setProfilingLevel(2),然后db.system.profile.find(),最后寻找"moved:true",但我不确定是否可以在繁忙的生产系统上执行此操作.以下组合似乎会导致写入性能急剧下降:
据推测,I/O 已饱和。改变这些因素中的任何一个似乎可以防止这种情况发生:
此外,这里还有一些提高写入吞吐量的其他技巧。除了分片之外,我们发现改进是增量式的,而我们试图解决“这根本不起作用”之类的问题,但我将它们包含在此处,以防您正在寻求增量式改进。10Gen 人员做了一些测试并得到了类似的结果:
{"0":[...], "1":[...],...,"23":[...]}。您会注意到,为了完整起见,我在这里复制了 10Gen 的一些建议。希望我做得这么准确!如果他们发布了食谱示例,那么我将在此处发布一个链接。
| 归档时间: |
|
| 查看次数: |
2770 次 |
| 最近记录: |