我最近遇到了一个问题,即每秒从磁盘读取操作数量大约增加了1000倍(频繁出现峰值)并达到我们在AWS中规定的IOPS限制,从而减慢了所有内容.
我最初的想法是,有些东西在MongoDB中大量写入数据,将预期在缓存中的数据驱逐回磁盘.
有没有办法明确知道缓存中的内容,而不是打开和关闭可能导致此问题的各种功能?
用一种比我的问题更具体的方式来表达它 – 对我来说最好的方法是找出为什么一块应该在内存中的数据突然之间没有.
编辑:
我的设置细节 – 它是mongodb 3.0.6的副本集,WiredTiger作为存储引擎.
最佳答案 您可以使用这些有趣的ootb工具进行分析:
> mongotop optional_secs:此命令显示mongo进程在哪个集合中花费时间.它还显示了读写时间.
>要点:
异常高读取时间通常意味着不使用索引.
异常高写入时间可能是因为插入时需要维护索引.
> mongostat :(像iostat)告诉我们mongo DB的IO统计数据.
>要点:idx_miss% – 如果程序正在使用索引,索引(内存)的未命中率意味着程序必须在磁盘中搜索.