服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

MongoDB和不适合内存的数据集,无论你多么努力

这是非常依赖系统的,但是几乎可以肯定的是,我们将经过一些任意的悬崖,进入真正的麻烦。 我很好奇,对于一个好的RAM与磁盘空间的比例,存在什么样的规则。 我们正在计划下一轮的系统,并且需要对内存,SSD以及每个新节点的数量做出select。 但现在有些performance细节! 在单个项目运行的正常工作stream程中,MongoDB的写入比例非常高(70-80%)。 一旦处理pipe道的第二阶段结束,读取的数据就非常高,因为它需要对在前半部分处理中标识的logging进行重复数据删除。 这是“让你的工作集在RAM中”的工作stream程,我们正在围绕这个假设进行devise。 整个数据集不断被来自最终用户派生源的随机查询命中; 虽然频率是不规则的,但大小通常很小(10个文件组)。 由于这是面向用户的,所以回复需要在3秒钟的“无聊 – 现在”阈值之下。 这种访问模式在caching中的可能性要小得多,所以很可能会产生磁盘命中。 二次处理工作stream程是先前的处理运行的高度读取,其可以是几天,几周甚至几个月,并且很less运行,但仍然需要快速。 以前的处理运行中的文件最多可以被访问100%。 我怀疑,没有任何数量的高速caching可以帮助解决这个问题。 完成的文件大小差别很大,但中值大小约为8K。 正常项目处理的高读取部分强烈build议使用副本来帮助分发读取stream量。 我已经在其他地方看到,对于慢速磁盘,1:10的RAM-GB到HD-GB是一个很好的经验法则。由于我们正在认真考虑使用速度更快的SSD,我想知道是否有类似的规则的快速磁盘的拇指。 我知道我们正在使用Mongo的方式是caching – 一切真的不会飞,所以我正在寻找方法来devise一个系统,以保持这种使用。 整个数据集可能在半年内成为结核病的大部分,并持续增长。